<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

<author contact="mailto:zbrown@tumblerings.org">Zack Brown</author>

<issue num="300" date="29 Mar 2005 00:00:00 -0800" />

<mailbox-stats>
	<global-stats>
		<generated-at>Thu Mar 31 08:13:50 2005</generated-at>
		<first-message>2005/02/04 11:03:47</first-message>
		<last-message>2005/02/16 22:49:58</last-message>
		<totals>
			<n-messages>1649</n-messages>
			<total-size>9MB</total-size>
			<avg-size>6KB</avg-size>
			<n-writers>649</n-writers>
			<wrote-more-then-1-message>234</wrote-more-then-1-message>
			<n-lines>129517</n-lines>
			<header-size>89319</header-size>
			<n-user-agents>65</n-user-agents>
			<n-organisations>55</n-organisations>
			<n-toplevel-domains>40</n-toplevel-domains>
		</totals>
		<averages>
			<lines-per-message>78</lines-per-message>
			<lines-per-header>54</lines-per-header>
			<header-percent-of-message>68.96%</header-percent-of-message>
			<header-percent-of-total>48.74%</header-percent-of-total>
			<line-length>28015</line-length>
			<bits-per-byte>4.2635</bits-per-byte>
		</averages>
		<importance>
			<low>0.00%</low>
			<normal>1.46%</normal>
			<high>0.00%</high>
		</importance>

	</global-stats>
	<top-writers>
		<top-writer rank="1">
			<e-mail-addr>Adrian Bunk</e-mail-addr>
			<n-messages>51</n-messages>
			<avg-size>7KB</avg-size>
			<total-size>311KB</total-size>
			<mostly-written-at>12:39</mostly-written-at>
		</top-writer>
		<top-writer rank="2">
			<e-mail-addr>Jeff Garzik</e-mail-addr>
			<n-messages>48</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>233KB</total-size>
			<mostly-written-at>13:58</mostly-written-at>
		</top-writer>
		<top-writer rank="3">
			<e-mail-addr>Ingo Molnar</e-mail-addr>
			<n-messages>39</n-messages>
			<avg-size>4KB</avg-size>
			<total-size>152KB</total-size>
			<mostly-written-at>11:48</mostly-written-at>
		</top-writer>
		<top-writer rank="4">
			<e-mail-addr>Ray Bryant</e-mail-addr>
			<n-messages>34</n-messages>
			<avg-size>7KB</avg-size>
			<total-size>212KB</total-size>
			<mostly-written-at>13:11</mostly-written-at>
		</top-writer>
		<top-writer rank="5">
			<e-mail-addr>Linus Torvalds</e-mail-addr>
			<n-messages>32</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>141KB</total-size>
			<mostly-written-at>13:48</mostly-written-at>
		</top-writer>
	</top-writers>
	<top-subjects>
		<top-subject rank="1">
			<subject>[BK] upgrade will be needed</subject>
			<n-messages>136</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>556KB</total-size>
			<mostly-written-at>13:04</mostly-written-at>
		</top-subject>
		<top-subject rank="2">
			<subject>[RFC 2.6.11-rc2-mm2 0/7] mm: manual page migration -- overview</subject>
			<n-messages>47</n-messages>
			<avg-size>6KB</avg-size>
			<total-size>250KB</total-size>
			<mostly-written-at>11:39</mostly-written-at>
		</top-subject>
		<top-subject rank="3">
			<subject>2.6: drivers/input/power.c is never built</subject>
			<n-messages>46</n-messages>
			<avg-size>4KB</avg-size>
			<total-size>178KB</total-size>
			<mostly-written-at>16:15</mostly-written-at>
		</top-subject>
		<top-subject rank="4">
			<subject>[ANNOUNCE] hotplug-ng 001 release</subject>
			<n-messages>46</n-messages>
			<avg-size>4KB</avg-size>
			<total-size>172KB</total-size>
			<mostly-written-at>14:28</mostly-written-at>
		</top-subject>
		<top-subject rank="5">
			<subject>2.6.11-rc3-mm2</subject>
			<n-messages>45</n-messages>
			<avg-size>6KB</avg-size>
			<total-size>267KB</total-size>
			<mostly-written-at>11:55</mostly-written-at>
		</top-subject>
	</top-subjects>
	<top-receivers>
		<top-receiver rank="1">
			<e-mail-addr>linux-kernel@vger.kernel.org</e-mail-addr>
			<n-messages>283</n-messages>
			<avg-size>7KB</avg-size>
			<total-size>2MB</total-size>
			<mostly-written-at>13:47</mostly-written-at>
		</top-receiver>
		<top-receiver rank="2">
			<e-mail-addr>akpm@osdl.org</e-mail-addr>
			<n-messages>75</n-messages>
			<avg-size>8KB</avg-size>
			<total-size>569KB</total-size>
			<mostly-written-at>13:32</mostly-written-at>
		</top-receiver>
		<top-receiver rank="3">
			<e-mail-addr>Jeff Garzik</e-mail-addr>
			<n-messages>51</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>246KB</total-size>
			<mostly-written-at>12:29</mostly-written-at>
		</top-receiver>
		<top-receiver rank="4">
			<e-mail-addr>Ingo Molnar</e-mail-addr>
			<n-messages>49</n-messages>
			<avg-size>10KB</avg-size>
			<total-size>449KB</total-size>
			<mostly-written-at>08:59</mostly-written-at>
		</top-receiver>
		<top-receiver rank="5">
			<e-mail-addr>Linus Torvalds</e-mail-addr>
			<n-messages>47</n-messages>
			<avg-size>6KB</avg-size>
			<total-size>270KB</total-size>
			<mostly-written-at>15:09</mostly-written-at>
		</top-receiver>
	</top-receivers>
	<top-ccers>
		<top-ccers rank="1">
			<e-mail-addr>linux-kernel@vger.kernel.org</e-mail-addr>
			<n-messages>580</n-messages>
			<avg-size>6KB</avg-size>
			<total-size>3MB</total-size>
			<mostly-written-at>13:51</mostly-written-at>
		</top-ccers>
		<top-ccers rank="2">
			<e-mail-addr>Andrew Morton</e-mail-addr>
			<n-messages>76</n-messages>
			<avg-size>7KB</avg-size>
			<total-size>490KB</total-size>
			<mostly-written-at>13:41</mostly-written-at>
		</top-ccers>
		<top-ccers rank="3">
			<e-mail-addr>linux-net@vger.kernel.org</e-mail-addr>
			<n-messages>58</n-messages>
			<avg-size>6KB</avg-size>
			<total-size>318KB</total-size>
			<mostly-written-at>13:19</mostly-written-at>
		</top-ccers>
		<top-ccers rank="4">
			<e-mail-addr>Ray Bryant</e-mail-addr>
			<n-messages>52</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>245KB</total-size>
			<mostly-written-at>12:39</mostly-written-at>
		</top-ccers>
		<top-ccers rank="5">
			<e-mail-addr>Ray Bryant</e-mail-addr>
			<n-messages>46</n-messages>
			<avg-size>6KB</avg-size>
			<total-size>254KB</total-size>
			<mostly-written-at>12:45</mostly-written-at>
		</top-ccers>
	</top-ccers>
	<top-level-domains>
		<tld rank="1">
			<name>com</name>
			<freq>647</freq>
		</tld>
		<tld rank="2">
			<name>org</name>
			<freq>265</freq>
		</tld>
		<tld rank="3">
			<name>de</name>
			<freq>224</freq>
		</tld>
		<tld rank="4">
			<name>net</name>
			<freq>120</freq>
		</tld>
		<tld rank="5">
			<name>uk</name>
			<freq>42</freq>
		</tld>
	</top-level-domains>
	<top-timezones>
		<tz rank="1">
			<name>+0100</name>
			<freq>534</freq>
		</tz>
		<tz rank="2">
			<name>-0500</name>
			<freq>368</freq>
		</tz>
		<tz rank="3">
			<name>-0800</name>
			<freq>325</freq>
		</tz>
		<tz rank="4">
			<name>+0000</name>
			<freq>131</freq>
		</tz>
		<tz rank="5">
			<name>-0600</name>
			<freq>94</freq>
		</tz>
	</top-timezones>
	<top-organisations>
		<org rank="1">
			<name>SGI</name>
			<freq>27</freq>
			<bytes>102KB</bytes>
		</org>
		<org rank="2">
			<name>Kihon Technologies</name>
			<freq>16</freq>
			<bytes>112KB</bytes>
		</org>
		<org rank="3">
			<name>SUSE Labs</name>
			<freq>8</freq>
			<bytes>45KB</bytes>
		</org>
		<org rank="4">
			<name>TEQUILA\Japan</name>
			<freq>7</freq>
			<bytes>30KB</bytes>
		</org>
		<org rank="5">
			<name>TMR Associates, Inc</name>
			<freq>7</freq>
			<bytes>27KB</bytes>
		</org>
	</top-organisations>
	<top-user-agents>
		<useragent rank="1">
			<name>Mutt/1.5.6+20040907i</name>
			<freq>41</freq>
			<bytes>897KB</bytes>
		</useragent>
		<useragent rank="2">
			<name>Mozilla</name>
			<freq>41</freq>
			<bytes>490KB</bytes>
		</useragent>
		<useragent rank="3">
			<name>Evolution</name>
			<freq>39</freq>
			<bytes>2MB</bytes>
		</useragent>
		<useragent rank="4">
			<name>Mozilla/5.0</name>
			<freq>24</freq>
			<bytes>899KB</bytes>
		</useragent>
		<useragent rank="5">
			<name>Mutt/1.4.1i</name>
			<freq>21</freq>
			<bytes>561KB</bytes>
		</useragent>
	</top-user-agents>
	<messages-per-day>
		<Sunday><msgs>113</msgs><bytes>684KB</bytes></Sunday>
		<Monday><msgs>268</msgs><bytes>2MB</bytes></Monday>
		<Tuesday><msgs>320</msgs><bytes>2MB</bytes></Tuesday>
		<Wednesday><msgs>193</msgs><bytes>911KB</bytes></Wednesday>
		<Thursday><msgs>282</msgs><bytes>2MB</bytes></Thursday>
		<Friday><msgs>276</msgs><bytes>2MB</bytes></Friday>
		<Saturday><msgs>178</msgs><bytes>999KB</bytes></Saturday>
	</messages-per-day>
	<messages-per-month>
		<Jan><msgs>0</msgs><bytes>0</bytes></Jan>
		<Feb><msgs>1630</msgs><bytes>9MB</bytes></Feb>
		<Mar><msgs>0</msgs><bytes>0</bytes></Mar>
		<Apr><msgs>0</msgs><bytes>0</bytes></Apr>
		<May><msgs>0</msgs><bytes>0</bytes></May>
		<Jun><msgs>0</msgs><bytes>0</bytes></Jun>
		<Jul><msgs>0</msgs><bytes>0</bytes></Jul>
		<Aug><msgs>0</msgs><bytes>0</bytes></Aug>
		<Sep><msgs>0</msgs><bytes>0</bytes></Sep>
		<Oct><msgs>0</msgs><bytes>0</bytes></Oct>
		<Nov><msgs>0</msgs><bytes>0</bytes></Nov>
		<Dec><msgs>0</msgs><bytes>0</bytes></Dec>
	</messages-per-month>
	<messages-per-day-of-month>
		<day-1><msgs>0</msgs><bytes>0</bytes></day-1>
		<day-2><msgs>0</msgs><bytes>0</bytes></day-2>
		<day-3><msgs>0</msgs><bytes>0</bytes></day-3>
		<day-4><msgs>5</msgs><bytes>58KB</bytes></day-4>
		<day-5><msgs>4</msgs><bytes>13KB</bytes></day-5>
		<day-6><msgs>0</msgs><bytes>0</bytes></day-6>
		<day-7><msgs>7</msgs><bytes>26KB</bytes></day-7>
		<day-8><msgs>12</msgs><bytes>153KB</bytes></day-8>
		<day-9><msgs>12</msgs><bytes>64KB</bytes></day-9>
		<day-10><msgs>33</msgs><bytes>283KB</bytes></day-10>
		<day-11><msgs>72</msgs><bytes>352KB</bytes></day-11>
		<day-12><msgs>22</msgs><bytes>95KB</bytes></day-12>
		<day-13><msgs>21</msgs><bytes>107KB</bytes></day-13>
		<day-14><msgs>116</msgs><bytes>514KB</bytes></day-14>
		<day-15><msgs>141</msgs><bytes>629KB</bytes></day-15>
		<day-16><msgs>91</msgs><bytes>455KB</bytes></day-16>
		<day-17><msgs>232</msgs><bytes>2MB</bytes></day-17>
		<day-18><msgs>199</msgs><bytes>969KB</bytes></day-18>
		<day-19><msgs>152</msgs><bytes>891KB</bytes></day-19>
		<day-20><msgs>92</msgs><bytes>577KB</bytes></day-20>
		<day-21><msgs>145</msgs><bytes>701KB</bytes></day-21>
		<day-22><msgs>167</msgs><bytes>803KB</bytes></day-22>
		<day-23><msgs>90</msgs><bytes>393KB</bytes></day-23>
		<day-24><msgs>17</msgs><bytes>156KB</bytes></day-24>
		<day-25><msgs>0</msgs><bytes>0</bytes></day-25>
		<day-26><msgs>0</msgs><bytes>0</bytes></day-26>
		<day-27><msgs>0</msgs><bytes>0</bytes></day-27>
		<day-28><msgs>0</msgs><bytes>0</bytes></day-28>
		<day-29><msgs>0</msgs><bytes>0</bytes></day-29>
		<day-30><msgs>0</msgs><bytes>0</bytes></day-30>
		<day-31><msgs>0</msgs><bytes>0</bytes></day-31>
	</messages-per-day-of-month>
	<messages-per-hour>
		<hour-1><msgs>53</msgs><bytes>390KB</bytes></hour-1>
		<hour-2><msgs>33</msgs><bytes>275KB</bytes></hour-2>
		<hour-3><msgs>13</msgs><bytes>61KB</bytes></hour-3>
		<hour-4><msgs>12</msgs><bytes>61KB</bytes></hour-4>
		<hour-5><msgs>12</msgs><bytes>91KB</bytes></hour-5>
		<hour-6><msgs>16</msgs><bytes>63KB</bytes></hour-6>
		<hour-7><msgs>32</msgs><bytes>124KB</bytes></hour-7>
		<hour-8><msgs>46</msgs><bytes>188KB</bytes></hour-8>
		<hour-9><msgs>98</msgs><bytes>441KB</bytes></hour-9>
		<hour-10><msgs>106</msgs><bytes>438KB</bytes></hour-10>
		<hour-11><msgs>96</msgs><bytes>599KB</bytes></hour-11>
		<hour-12><msgs>98</msgs><bytes>486KB</bytes></hour-12>
		<hour-13><msgs>105</msgs><bytes>593KB</bytes></hour-13>
		<hour-14><msgs>118</msgs><bytes>559KB</bytes></hour-14>
		<hour-15><msgs>118</msgs><bytes>598KB</bytes></hour-15>
		<hour-16><msgs>102</msgs><bytes>635KB</bytes></hour-16>
		<hour-17><msgs>83</msgs><bytes>387KB</bytes></hour-17>
		<hour-18><msgs>78</msgs><bytes>390KB</bytes></hour-18>
		<hour-19><msgs>69</msgs><bytes>341KB</bytes></hour-19>
		<hour-20><msgs>77</msgs><bytes>363KB</bytes></hour-20>
		<hour-21><msgs>83</msgs><bytes>412KB</bytes></hour-21>
		<hour-22><msgs>67</msgs><bytes>282KB</bytes></hour-22>
		<hour-23><msgs>51</msgs><bytes>268KB</bytes></hour-23>
	</messages-per-hour>
	<created-with><name>mboxstats</name><version>2.2</version><developer>folkert@vanheusden.com</developer><url>http://www.vanheusden.com/mboxstats/</url></created-with>
</mailbox-stats>

<section
  title="Linux 2.6.11-rc3-mm2 Released; Some Debate Over Security"
  subject="2.6.11-rc3-mm2"
  archive="http://groups-beta.google.com/group/fa.linux.kernel/msg/bbb45937b1c1d6b5"
  posts="51"
  startdate="10 Feb 2005 02:35:08 -0800"
  enddate="18 Feb 2005 09:48:03 -0800"
>
<topic>Capabilities</topic>
<topic>FS: accessfs</topic>
<topic>Kernel Release Announcement</topic>
<topic>Real-Time</topic>

<mention>Matt Mackall</mention>

<p>Andrew Morton announced Linux 2.6.11-rc3-mm2, saying:</p>

<quote who="Andrew Morton">

<p><a href="ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.11-rc3/2.6.11-rc3-mm2/">ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.11-rc3/2.6.11-rc3-mm2/</a></p>

<p>

<ul>

<li>Added the mlock and !SCHED_OTHER Linux Security Module for the audio guys.
  It seems that nothing else is going to come along and this is completely
  encapsulated.</li>

<li>

<p>Various other stuff.  If anyone has a patch in here which they think
should be in 2.6.11, please let me know.  I'm intending to merge the
following into 2.6.11:</p>

<p>        alpha-add-missing-dma_mapping_error.patch<br />
        fix-compat-shmget-overflow.patch<br />
        fix-shmget-for-ppc64-s390-64-sparc64.patch<br />
        binfmt_elf-clearing-bss-may-fail.patch<br />
        qlogic-warning-fixes.patch<br />
        oprofile-exittext-referenced-in-inittext.patch<br />
        force-read-implies-exec-for-all-32bit-processes-in-x86-64.patch<br />
        oprofile-arm-xscale1-pmu-support-fix.patch</p>

</li>

</ul>

</p>

</quote>

<p>Regarding the security module patches, Christoph Hellwig said, <quote
who="Christoph Hellwig">Even if we accept a module that grants capabilities to
groups this isn't fine yet because it only supports two specific capabilities
(and even those two in different ways!) instead of adding generic support
to bind capabilities to groups.</quote> Olaf Dietsche remarked:</p>

<quote who="Olaf Dietsche">

<p>Unless I misunderstood the code,
this one is available for quite some time: &lt;<a
href="http://www.olafdietsche.de/linux/accessfs/">http://www.olafdietsche.de/linux/accessfs/</a>&gt;
or a newer, self-contained version &lt;<a
href="http://lkml.org/lkml/2005/1/11/221">http://lkml.org/lkml/2005/1/11/221</a>&gt;</p>

<p>Or you could use a real solution - filesystem capabilities: &lt;<a
href="http://www.olafdietsche.de/linux/capability/">http://www.olafdietsche.de/linux/capability/</a>&gt;
and if you don't like this one :-), there's
also an alternative existing here: &lt;<a
href="http://www.stanford.edu/~luto/linux-fscap/">http://www.stanford.edu/~luto/linux-fscap/</a>&gt;</p>

</quote>

<p>Andrew also said to Christoph, <quote who="Andrew Morton">I'm sure
that got discussed somewhere in the 1000 emails which flew past last time.
Jack?</quote> And Jack O'Quin replied:</p>

<quote who="Jack O'Quin">

<p>Most people felt that a more general capabilities module would be nice
to have.  But, no one offered any code, or volunteered to work on it.</p>

<p>I have no objection to that approach, but am not willing or able to
do it myself.  My opinion is that expanding the scope of the LSM would
significantly increase its security risk.  That job needs to be done very
carefully, by someone with a deep understanding of the kernel's internal
use of capabilities.</p>

<p>Perhaps, Christoph's suggestion could become part of a more general module,
which might replace the RT-LSM in the 2.8 timeframe.  Our LSM is a modest
solution aimed at solving the immediate needs of audio developers and users
with minimal impact on kernel security or correctness.</p>

</quote>

<p>Matt Mackall asked what happened to the RT rlimit code from Chris Wright,
and Chris replied, <quote who="Chris Wright">I still have it, but I had the
impression Ingo didn't like it as a long term solution/hack (albeit small) to
the scheduler.  Whereas the rt-lsm patch is wholly self-contained.</quote></p>

<p>It turned out there were many opinions about the various
implementations. Chris was right that his rlimit patch was considered too
invasive. Actually, the main reason Andrew chose the RT LSM solution was
because none of the alternatives were self-contained enough. And although,
as Matt pointed out, Chris' patches were more straightforward than the other
althernatives considered; there was still the problem that, as Ingo Molnar
pointed out, <quote who="Ingo Molnar">it didnt solve the problem (unprivileged
user can lock up the system) in any way. So after it became visible that all
the existing 'dont allow users to lock up' solutions are too invasive, we went
to recommend the solution that introduces the least architectural problems:
RT-LSM.</quote> Elsewhere in the thread, Ingo made another point about Chris'
rlimit patch. He said, <quote who="Ingo Molnar">if it turns out to be a
mistake then it's already codified into the ABI, while RT-LSM is much less
'persistent' and could be replaced much easier.</quote> Christoph and Matt,
however, were very dubious about the possibility of removing RT-LSM later;
they said once RT-LSM was in the kernel, people would begin to rely on it,
and removing it would not be just a simple technical issue. Ingo replied:</p>

<quote who="Ingo Molnar">

<p>i somewhat share that view. (despite all the promises from the audio
folks - if they are just half as agressive resisting removal as they were
pushing integration then it will never be removed ;-)</p>

<p>but i'm not sure how rlimits will contain the whole problem - can rlimits
be restricted to a single app (jackd)? The most canonical use of rlimits is
per-user (per-group), so the rlimit could end up _widening_ the effects of
the hack ...</p>

</quote>

<p>Matt confirmed that rlimits could indeed be restricted to a single
application. Ingo asked how this could be accomplished, and Matt replied that
the application had to be invoked by a setuid launcher; it was not possible
to use rlimits to elevate the rlimits of a running process. Ingo argued
that if there was already a requirement for a setuid application launcher,
there was no need for anything else; the launcher itself could give the
needed privileges. Matt argued that the rlimits patch would do a lot more
than just this; but the discussion ended abrubtly, with no resolution.</p>

</section>

<section
  title="New Hotplug Project; Reducing Boot-Time"
  subject="[ANNOUNCE] hotplug-ng 001 release"
  archive="http://groups-beta.google.com/group/linux.kernel/msg/96ee4fa5e957c7a6"
  posts="76"
  startdate="10 Feb 2005 16:40:33 -0800"
  enddate="16 Feb 2005 22:46:15 -0800"
>
<topic>FS: devfs</topic>
<topic>FS: initramfs</topic>
<topic>FS: ramfs</topic>
<topic>Hot-Plugging</topic>
<topic>Klibc</topic>
<topic>PCI</topic>
<topic>Version Control</topic>
<topic>Virtual Memory</topic>

<p>Greg KH said:</p>

<quote who="Greg KH">

<p>I'd like to announce, yet-another-hotplug based userspace project:
hotplug-ng.  This collection of code replaces the existing linux-hotplug
package with very tiny, compiled executable programs, instead of the
existing bash scripts.</p>

<p>It currently provides the following:</p>

<p>

<ul>

<li>a /sbin/hotplug multiplexer.  Works identical to the existing bash
/sbin/hotplug.</li>

<li>autoload programs for usb, scsi, and pci modules.  These programs determine
what module needs to be loaded when the kernel emits a hotplug event for these
types of devices.  This works just like the existing linux-hotplug scripts,
with a few exceptions.</li>

</ul>

</p>

<p>But why redo this all in .c code?  What's wrong with shell scripts?
Nothing is wrong with shell scripts, unless you don't want to have an
interpreter in your initramfs/initrd and you want to provide /sbin/hotplug
and autoload module functionality.  Or if you have a huge box that spawns
a zillion hotplug events all at once, and you need to be able to handle all
of that with the minimum amount of processing time and memory.</p>

<p>So, how small are these programs?  Take a look:</p>

<pre>   text    data     bss     dec     hex filename
   4669      32     124    4825    12d9 hotplug
   5077       8     348    5433    1539 module_pci
   4925       8     412    5345    14e1 module_scsi
   5349       8     348    5705    1649 module_usb</pre>

<p>Those are all static binaries, linked with klibc (which is included in
the hotplug-ng package, just like udev.)</p>

<p>This compares to the following bash scripts:</p>

<pre>-rwxr-xr-x  1 root root  4412 Feb 10 15:28 /sbin/hotplug
-rw-r--r--  1 root root   702 Sep 24 08:04 /etc/hotplug/blacklist
-rw-r--r--  1 root root  5293 Sep 24 08:04 /etc/hotplug/hotplug.functions
-rwxr-xr-x  1 root root  3739 Sep 24 08:04 /etc/hotplug/pci.agent
-rwxr-xr-x  1 root root  1459 Sep 24 08:04 /etc/hotplug/scsi.agent
-rwxr-xr-x  1 root root 13466 Sep 24 08:04 /etc/hotplug/usb.agent
-rw-r--r--  1 root root 39306 Sep 24 08:04 /etc/hotplug/usb.distmap
-rw-r--r--  1 root root  4364 Sep 24 08:04 /etc/hotplug/usb.handmap
-rw-r--r--  1 root root   189 Sep 24 08:04 /etc/hotplug/usb.usermap</pre>

<p>All of which are loaded into memory for each hotplug event (for specific
hotplug events, only that bus type of file is loaded.)</p>

<p>But what about speed?  With a completely unscientific measurement on my
old, slow laptop, it takes about 2 seconds from the time I plug a usb device
into the machine, for the proper module to be loaded.  With the hotplug-ng
program, it takes less than a second.</p>

<p>And for those of you who might remember the old dietHotplug program that
also did the same thing in a tiny amount of space, this project obsoletes
that one.  dietHotplug had to be rebuilt for every kernel that was used
on the system, hotplug-ng uses the ability for modprobe to determine the
module that needs to be loaded based on the module aliases (modprobe as it
currently works stops loading modules when it finds an alias that matches.
This does not work for drivers that claim to support "all devices" and
then later on fail on devices that they really don't support.  For that,
all matching drivers need to be loaded for the system to work properly.
The linux-hotplug scripts handle this correctly, so if you rely on this
functionality, please stick with that package for now.  I'll be modifying
modprobe to add this feature in the near future.).</p>

<p>The code can be found at:<br />
        <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/hotplug-ng-001.tar.gz">kernel.org/pub/linux/utils/kernel/hotplug/hotplug-ng-001.tar.gz</a><br />
for those who wish to poke around in it.</p>

<p>I still have a few more programs to write to get it up to the same
functionality as the existing hotplug scripts (firmware, ieee1392, etc.)
but those will be done soon.  I'd like to get people's comments on the
idea, and welcome suggestions and even patches :)</p>

<p>hotplug-ng development is done in a BitKeeper repository located at:<br />
        bk://linuxusb.bkbits.net/hotplug-ng</p>

</quote>

<p>Patrick McFarland replied:</p>

<quote who="Patrick McFarland">

<p>Wow, thats pretty awesome. Just the other day I said, "Why is hotplug
written in sh? Isn't that horribly inefficient way of handling something
that needs to be done quickly using the least amount of resources possible?"
It seems you were reading my mind.</p>

<p>Please, continue this project and encourage distros to switch to it
(when it exceeds hotplug in functionality and stability). Ubuntu currently
is trying to reduce boot time, and I bet something like this would factor in
(even a few seconds helps).</p>

</quote>

<p>Greg was grateful for the praise, and he did confirm that he'd been
talking to the Ubuntu folks; but he didn't think his code would really have
an impact on boot-time. Vojtech Pavlik, however, said, <quote who="Vojtech
Pavlik">Hotplug scripts were identified as one of the major culprits of slow
boot when we did the analysis for SuSE 9.2. They took 40+ seconds from the
total boot time.</quote></p>

<p>At this point the debate veered off, into which distributions put in how
much effort to reduce boot time.</p>

</section>

<section
  title="BitKeeper Licensing; Kernel Developers Unhappy"
  subject="[BK] upgrade will be needed"
  posts="159"
  startdate="13 Feb 2005 18:08:02 -0800"
  enddate="23 Feb 2005 11:15:59 -0800"
>
<topic>Version Control</topic>

<p>Larry McVoy said:</p>

<quote who="Larry McVoy">

<p>This is a heads up that the BK tree for the kernel is currently at 59,000
changesets give or take a few.  The BK that you are using uses unsigned
shorts for the internal names of each delta which means you folks are about
100 days away from things no longer working.</p>

<p>The good news is that the openlogging tree for the kernel has 135,000
changesets so we've obviously long since fixed this problem.</p>

<p>The bad news is that you will need to upgrade your BK binary in order to
pass over the 64K changeset boundary.  The data is stored on disk in ascii
so it doesn't matter if you upgrade until you hit the problem but sooner or
later you will need to upgrade.</p>

<p>We'll get the fix into bk-3.2.4 which should be out by the end of the month.
When we release that we'll send out notice and it would be good if people
gave it a try and let us know if they hit issues because in a couple of
months everyone is going to have to upgrade.</p>

<p>It's possible that we'll be changing the BK license to conform more with
our commercial license but we won't do that without running it by Linus
&amp; Co to make sure that it's acceptable.  One change we'd like to make
there is to clarify the non-compete stuff.  We've had some people who have
indicated that they believed that if they used BK they were agreeing that
they would never work on another SCM system.  We can see how it is possible
that people would interpret the license that way but that wasn't our intent.
What we would like to do is change the language to say that if you use BK
you are agreeing that you won't work on another SCM for 1 year after you
stop using BK.  But after that you would be able to hack on anything that
you wanted.  That was more of what we had in mind in the first place but we
didn't make it clear.  If you all thought that using BK meant you had no right
to hack on SCM ever again, that's just not fair.  We need to protect our IP
but you should have the right to choose to go hack SCM if that's what you
(our first choice is that you came and worked here, we really like kernel
hackers, but if you don't want to that's cool too).</p>

</quote>

<p>Various folks protested that it was absurd to have a license that
prohibited working on a competing project for a year; and some folks said it
was unenforceable, or that it had no standing in many parts of the world. A big
discussion started up, in which some folks accused Larry of misrepresenting his
objectives; while others pleaded with him to use a more sensible license. At
one point Alan Cox remarked, <quote who="Alan Cox">The real fix is to replace
BK with something free and better, but thats *not* a trivial task.</quote></p>

</section>

<section
  title="An Attempt At /proc/cpumem"
  subject="[PATCH] /proc/cpumem"
  archive="http://groups-beta.google.com/group/linux.kernel/msg/441a810e6f14a8d3"
  posts="11"
  startdate="16 Feb 2005 00:49:51 -0800"
  enddate="17 Feb 2005 23:22:08 -0800"
>

<p>Itsuro Oda said:</p>

<quote who="Itsuro Oda">

<p>Attached is an implementation of /proc/cpumem.
/proc/cpumem shows the valid physical memory ranges.</p>

<p>

<ul>

<li>i386 and x86_64</li>
<li>implement valid_phys_addr_range() and use it.
  (the first argument of the i386 version is little uncomfortable.)</li>
<li>/dev/mem of the i386 version should be mofified. but not yet.</li>

</ul>

</p>

<p>example: amd64 8GB Mem</p>

<pre># cat /proc/cpumem
0000000000000000 000000000009b800
0000000000100000 00000000fbe70000
0000000100000000 0000000100000000
#</pre>

<p>start address and size. hex digit.</p>

</quote>

<p>Eric W. Biederman replied, <quote who="Eric W. Biederman">Interesting.
My imagination when I proposed this was something based on struct resource
that works like /proc/iomem on x86 but can be meaningfully be used on systems
where ram lives in a separate address space from io device memory.</quote>
He still felt that adding a type field to /proc/cpumem would be a more
appropriate solution, though he didn't feel it would be necessary for x86
machines, as the information was available elsewhere.</p>

</section>

<section
  title="New yaird Replacement For mkinitrd"
  subject="[ANNOUNCE] yaird, a mkinitrd based on hotplug concepts"
  archive="http://groups-beta.google.com/group/linux.kernel/msg/ccbedd4220cc6d8c"
  posts="4"
  startdate="17 Feb 2005 12:06:20 -0800"
  enddate="21 Feb 2005 11:13:55 -0800"
>
<topic>Backward Compatibility</topic>
<topic>Device Mapper</topic>
<topic>Disk Arrays: EVMS</topic>
<topic>Disk Arrays: LVM</topic>
<topic>Disks: IDE</topic>
<topic>Disks: SCSI</topic>
<topic>FS: NFS</topic>
<topic>FS: devfs</topic>
<topic>FS: initramfs</topic>
<topic>FS: ramfs</topic>
<topic>FS: sysfs</topic>
<topic>Hot-Plugging</topic>
<topic>Klibc</topic>
<topic>Serial ATA</topic>
<topic>Software Suspend</topic>
<topic>USB</topic>

<p>Erik van Konijnenburg said:</p>

<quote who="Erik van Konijnenburg">

<p>OK, time to stop polishing and start publishing.</p>

<p>This is to announce yaird, Yet Another mkInitRD, a rewrite of mkinitrd
based on hotplug algorithms.</p>

<h3>MOTIVATION</h3>

<p>Why a rewrite?  The versions of mkinitrd that I studied, Debian sid
and Fedora FC3, have some problems: they capture a lot of knowledge
about the boot process, but don't always understand when a new kernel
uses a different module name than the old kernel, may rely on modules
compiled into the kernel, and don't always catch errors at the earliest
opportunity.</p>

<p>Assumption: there are three issues that cause most of these problems.</p>

<p>

<ul>

<li>Backward compatibility: sysfs provides a wealth of information
   about hardware, but if you have to support 2.4 kernels, you have
   to limit yourself in the use you can make of that information.</li>

<li>Originality: hotplug does a pretty good job of finding the appropriate
   modules for a device, basically because it closely follows the
   algorithms the kernel uses for matching hardware with modules.
   Deviating from those algorithms is unlikely to produce a more
   robust result.</li>

<li>Shell scripting: beyond a certain level of complexity, the shell
   syntax makes it difficult to focus on the data structures you're
   trying to process and makes it difficult to do rigorous error checking.</li>

</ul>

</p>

<p>Yaird is intended to find out whether that assumption is correct: if so,
a program to build initrd images will be more reliable if it's written
in perl, if it uses sysfs to determine what hardware needs to be supported,
and if it closely follows the methods hotplug uses find the modules
needed to support some hardware.</p>

<h3>STATUS</h3>

<p>There is working code: yaird booted the machine this note is written on.
Code is available online, there also is a paper that discusses the workings
of the application in detail.</p>

<p><a href="http://www.xs4all.nl/~ekonijn/yaird/">http://www.xs4all.nl/~ekonijn/yaird/</a></p>

<p>So far, the program works correctly on every machine it's been tested on,
but with only two test boxes that does not mean much.</p>

<p>Basic creature comforts are in place: "configure; make" but no RPM or
deb files, a README and help option but no manual page.</p>

<p>Features:</p>

<p>

<ul>

<li>understands SATA and IDE.  USB sticks and SCSI should work, but are
   untested.</li>
<li>understands MDADM and LVM2, activates only necessary devices,
   understands stacks like LVM on top of stripe on top of mirror.</li>
<li>handles both initrd and initramfs.</li>
<li>understands USB keyboards.</li>
<li>understands hotplug blacklist.</li>
<li>knows that a module compiled into the kernel does not need insmod.</li>
<li>understands /etc/fstab, including niceties such as labels, uuids and
   octal escapes.</li>
<li>image generation understands symbolic links and shared libraries.
   (should support 32bit emulation on 64bit kernels; untested).</li>
<li>templating system to simplify tuning the initrd image to the
distribution.</li>
<li>avoids hard-coded device numbers; does not require devfs.</li>
<li>testing mode gives detailed overview of the systems hardware
   and the modules needed to support that.</li>

</ul>

</p>

<p>There are rough edges in practically every feature: this is suitable
for testing, but not for production use.</p>

<h3>TODO</h3>

<p>

<ol>

<li>Testing so far is 100% successful, but with just two boxes to play
with, that's not saying much.  If you can find space to test the code
on your system, your results are highly appreciated.  At this point,
hardware testing is most valuable: I already know that dm-crypt is
unsupported for now, but whether this stuff can boot a powerbook, sparc,
or just about anything else is an open question.</li>

<li>Feedback.  This may be an interesting idea, but how does it relate
to other new stuff floating about?  In particular, what about the work
that's going on putting udev on initramfs: are these approaches complementary
or alternatives?  Different perspectives on where this stuff fits in would
help.</li>

<li>Support more configurations.  dm-crypt is unsupported for now, and so
are multipath, swsusp, EVMS, NFS and loopback mounts.  Implementing this
stuff becomes interesting once there are some tests results that the
basic ideas work in practice.</li>

</ol>

</p>

</quote>

<p>Jeff Garzik replied:</p>

<quote who="Jeff Garzik">

<p>Having a mkinitrd that's not a shell script is a godsend.  I would endorse
yaird on that fact alone :)</p>

<p>I've long wanted a "mkinitfoo" that would create .cpio.gz for initramfs
by default.  So, good job there, too.</p>

<p>Eventually your script will need pull in, into the initramfs, klibc and
programs linked against klibc.</p>

</quote>

</section>

<section
  title="Extended Attribute Support For JFFS3"
  subject="JFFS2 Extended attributes support &amp; SELinux in handhelds"
  archive="http://groups-beta.google.com/group/linux.kernel/msg/c03f48158e6a99d0"
  posts="3"
  startdate="22 Feb 2005 08:17:19 -0800"
  enddate="22 Feb 2005 15:13:37 -0800"
>
<topic>Extended Attributes</topic>
<topic>FS: ReiserFS</topic>

<mention>James Morris</mention>

<p>Lorenzo Hern&#225;ndez Garc&#237;a-Hierro said:</p>

<quote who="Lorenzo Hern&#225;ndez Garc&#237;a-Hierro">

<p>I've been working in implementing extended attributes support in the
JFFS2 filesystem.</p>

<p>During the (short) time I worked on it, I just decided to try to bring
back the thread on SELinux in hand-held and embedded devices and see if
there's someone interested in contributing to it and collaborating to
make something out of it.</p>

<p>The current work is just a draft, I've started with the standard Vanilla
kernel sources plus mtd JFFS2 sources, used to patch the vanilla ones
for latest code (I'm confused on which one has the most updated tree or
if there are special differences between mtd's trees and vanilla's), and
implemented the skeleton using the reiserfs xattr code base.</p>

<p>Then Russell Coker commented to me that I should use the handhelds.org
kernel, so, I have the doubt on which one use, even if porting the
changes made to JFFS2 code base to vanilla sources wouldn't be
difficult, at least I suppose.</p>

<p>I've opened a few wiki pages for discussion and documenting until it
gets further developed:</p>

<p><a href="http://wiki.tuxedo-es.org/tuxedo/JFFS2xattr">http://wiki.tuxedo-es.org/tuxedo/JFFS2xattr</a><br />
<a href="http://wiki.tuxedo-es.org/tuxedo/SELinuxEmbedded">http://wiki.tuxedo-es.org/tuxedo/SELinuxEmbedded</a></p>

<p>In addition, having someone experienced with xattr API could be great,
as development documentation seems inexistent, among James Morris'
merged xattr consolidation code.</p>

</quote>

<p>Josh Boyer suggested talking to the JFFS2 developers; he said xattr support
would probably be added to JFFS3. After an IRC discussion between the two
of them, Lorenzo migrated his code to JFFS3, and posted a new patch.</p>

</section>

<section
  title="Linux 2.4.30-pre2 Released"
  subject="Linux 2.4.30-pre2"
  archive="http://groups-beta.google.com/group/linux.kernel/msg/16bf5d48a621ae28"
  posts="1"
  startdate="23 Feb 2005 00:12:09 -0800"
>
<topic>FS: JFS</topic>
<topic>USB</topic>

<p>Marcelo Tosatti announced Linux 2.4.30-pre2, saying:</p>

<quote who="Marcelo Tosatti">

<p>Here goes the second pre of v2.4.30.</p>

<p>It contains a bunch of important networking fixes, most noticeably the
brlocks rework.</p>

<p>Plus USB fixes, megaraid2 driver update, JFS update, amongst others.</p>

</quote>

</section>

<section
  title="yaird 0.0.4 Released"
  subject="[ANNOUNCE] yaird 0.0.4, a mkinitrd based on hotplug concepts"
  archive="http://groups-beta.google.com/group/linux.kernel/msg/f48ef4886546d732"
  posts="1"
  startdate="23 Feb 2005 09:24:52 -0800"
>
<topic>Disks: SCSI</topic>
<topic>FS: initramfs</topic>
<topic>FS: ramfs</topic>
<topic>FS: sysfs</topic>
<topic>Hot-Plugging</topic>
<topic>Klibc</topic>

<p>Erik van Konijnenburg said:</p>

<quote who="Erik van Konijnenburg">

<p>Version 0.0.4 of yaird is now available at:</p>

<p><a href="http://www.xs4all.nl/~ekonijn/yaird/yaird-0.0.4.tar.gz">http://www.xs4all.nl/~ekonijn/yaird/yaird-0.0.4.tar.gz</a></p>

<p>Yaird is a perl rewrite of mkinitrd.  It aims to reliably identify the
necessary modules by using the same algorithms as hotplug, and comes
with a template system to to tune the tool for different distributions
and experiment with different image layouts.  It requires a 2.6 kernel
with hotplug.  There is a paper discussing it at:</p>

<p><a href="http://www.xs4all.nl/~ekonijn/yaird/yaird.html">http://www.xs4all.nl/~ekonijn/yaird/yaird.html</a></p>

<p>There are rough edges in practically every feature, and numerous
features still need to be added: this is suitable for testing, but not
for production use.</p>

<p>Thanks to all who gave feedback, sent patches and were brave enough
to test this stuff.  Below are highlights from the change log and
todo list.</p>

<p>Summary of user visible changes for version 0.0.4:</p>

<p>

<ul>

<li>Process kernel command line options: init=, ro, rw.</li>

<li>Boot into single user mode supported</li>

<li>Support modules outside /lib/modules</li>

<li>Support modules with extension other than .ko</li>

<li>Warn about duplicates in modules.dep</li>

<li>Generated image now waits for device to become visible in /sys, and
gives error message if it doesn't</li>

<li>Support 2.6.10 sysfs layout: SCSI now has a new subdirectory 'target'.
(Thanks to Harald Dunkel for testing)</li>

<li>Warn about unrecognised paths in /sys</li>

<li>Empty lines in /etc/fstab are valid.  (Patch Goffredo Baroncelli)</li>

</ul>

</p>

<p>On top of the todo list are now:</p>

<p>

<ul>

<li>add command line option (--root=/dev/hdb) to simplify testing.</li>

<li>add tree copying to the templates, to allow all of firmware to be copied
to the image.  Or all of /lib/modules, if you want to have hotplug on the
image.</li>

<li>get klibc run_init working.  Test by switching the Debian template
to initramfs.  This should make Debian and Fedora templates more similar,
it is also groundwork for possible hotplug-ng support.</li>

<li>any patches you may wish to send :)</li>

</ul>

</p>

</quote>

</section>

</kc>

