<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="321" date="03 Sep 2005 00:00:00 -0800" />

<mailbox-stats>
	<global-stats>
		<generated-at>Wed Aug 31 07:18:32 2005</generated-at>
		<first-message>Sun Jul  3 11:26:50 2005</first-message>
		<last-message>Fri Jul 29 13:42:50 2005</last-message>
		<totals>
			<n-messages>1504</n-messages>
			<n-is-reply>1070</n-is-reply>
			<avg-resp-time>-134:-11:-45</avg-resp-time>
			<n-pgp-signed>57</n-pgp-signed>
			<total-size>9MB</total-size>
			<avg-size>6KB</avg-size>
			<n-attachments>62</n-attachments>
			<att-size>456KB</att-size>
			<bussiest-day-in-n day="2005-07-26"><n-msgs>257</n-msgs><n-bytes>2MB</n-bytes></bussiest-day-in-n>
			<bussiest-day-in-bytes day="2005-07-26"><n-msgs>257</n-msgs><n-bytes>2MB</n-bytes></bussiest-day-in-bytes>
			<n-writers>628</n-writers>
			<wrote-more-then-1-message>218</wrote-more-then-1-message>
			<n-lines>146380</n-lines>
			<header-size>80630</header-size>
			<n-user-agents>60</n-user-agents>
			<n-organisations>43</n-organisations>
			<n-toplevel-domains>35</n-toplevel-domains>
			<avg-spam-score>-14.413763</avg-spam-score>
				<spammiest-writer><score>4.400000</score><name>micheal&#32;mbayee</name></spammiest-writer>
		</totals>
		<averages>
			<lines-per-message>97</lines-per-message>
			<lines-per-header>53</lines-per-header>
			<header-percent-of-message>55.08%</header-percent-of-message>
			<header-percent-of-total>44.85%</header-percent-of-total>
			<line-length>28</line-length>
		</averages>
		<importance>
			<low>0.00%</low>
			<normal>0.40%</normal>
			<high>0.07%</high>
		</importance>

	</global-stats>
	<top-writers>
		<top-writer rank="1">
			<e-mail-addr>adrian&#32;bunk</e-mail-addr>
			<n-messages>63</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>297KB</total-size>
			<mostly-written-at>15:32</mostly-written-at>
		</top-writer>
		<top-writer rank="2">
			<e-mail-addr>akpm@osdl.org</e-mail-addr>
			<n-messages>54</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>226KB</total-size>
			<mostly-written-at>14:57</mostly-written-at>
		</top-writer>
		<top-writer rank="3">
			<e-mail-addr>lee&#32;revell</e-mail-addr>
			<n-messages>28</n-messages>
			<avg-size>4KB</avg-size>
			<total-size>87KB</total-size>
			<mostly-written-at>16:20</mostly-written-at>
		</top-writer>
		<top-writer rank="4">
			<e-mail-addr>dtor_core@ameritech.net</e-mail-addr>
			<n-messages>27</n-messages>
			<avg-size>6KB</avg-size>
			<total-size>153KB</total-size>
			<mostly-written-at>02:03</mostly-written-at>
		</top-writer>
		<top-writer rank="5">
			<e-mail-addr>pavel&#32;machek</e-mail-addr>
			<n-messages>23</n-messages>
			<avg-size>4KB</avg-size>
			<total-size>83KB</total-size>
			<mostly-written-at>11:22</mostly-written-at>
		</top-writer>
	</top-writers>
	<top-subjects>
		<top-subject rank="1">
			<subject>merging&#32;relayfs?</subject>
			<n-messages>73</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>362KB</total-size>
			<mostly-written-at>14:49</mostly-written-at>
			<first-msg>1121136358</first-msg>
			<last-msg>1122359720</last-msg>
		</top-subject>
		<top-subject rank="2">
			<subject>kernel&#32;guide&#32;to&#32;space</subject>
			<n-messages>38</n-messages>
			<avg-size>4KB</avg-size>
			<total-size>152KB</total-size>
			<mostly-written-at>14:10</mostly-written-at>
			<first-msg>1121107446</first-msg>
			<last-msg>1122118251</last-msg>
		</top-subject>
		<top-subject rank="3">
			<subject>memory&#32;pressure&#32;handling&#32;with&#32;iscsi</subject>
			<n-messages>28</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>127KB</total-size>
			<mostly-written-at>14:59</mostly-written-at>
			<first-msg>1122402930</first-msg>
			<last-msg>1122432466</last-msg>
		</top-subject>
		<top-subject rank="4">
			<subject>2.6.13-rc3-mm1&#32;(ckrm)</subject>
			<n-messages>26</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>128KB</total-size>
			<mostly-written-at>14:52</mostly-written-at>
			<first-msg>1121462170</first-msg>
			<last-msg>1122596101</last-msg>
		</top-subject>
		<top-subject rank="5">
			<subject>[patch&#32;2.6.13-rc3a]&#32;i386:&#32;inline&#32;restore_fpu</subject>
			<n-messages>22</n-messages>
			<avg-size>4KB</avg-size>
			<total-size>85KB</total-size>
			<mostly-written-at>10:19</mostly-written-at>
			<first-msg>1122013369</first-msg>
			<last-msg>1122427425</last-msg>
		</top-subject>
	</top-subjects>
	<top-receivers>
		<top-receiver rank="1">
			<e-mail-addr>linux-kernel@vger.kernel.org</e-mail-addr>
			<n-messages>246</n-messages>
			<avg-size>8KB</avg-size>
			<total-size>2MB</total-size>
			<mostly-written-at>13:49</mostly-written-at>
		</top-receiver>
		<top-receiver rank="2">
			<e-mail-addr>akpm@osdl.org</e-mail-addr>
			<n-messages>172</n-messages>
			<avg-size>9KB</avg-size>
			<total-size>2MB</total-size>
			<mostly-written-at>14:09</mostly-written-at>
		</top-receiver>
		<top-receiver rank="3">
			<e-mail-addr>torvalds@osdl.org</e-mail-addr>
			<n-messages>32</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>157KB</total-size>
			<mostly-written-at>13:46</mostly-written-at>
		</top-receiver>
		<top-receiver rank="4">
			<e-mail-addr>vojtech&#32;pavlik</e-mail-addr>
			<n-messages>31</n-messages>
			<avg-size>6KB</avg-size>
			<total-size>170KB</total-size>
			<mostly-written-at>03:27</mostly-written-at>
		</top-receiver>
		<top-receiver rank="5">
			<e-mail-addr>adrian&#32;bunk</e-mail-addr>
			<n-messages>27</n-messages>
			<avg-size>4KB</avg-size>
			<total-size>106KB</total-size>
			<mostly-written-at>12:18</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>731</n-messages>
			<avg-size>6KB</avg-size>
			<total-size>4MB</total-size>
			<mostly-written-at>13:46</mostly-written-at>
		</top-ccers>
		<top-ccers rank="2">
			<e-mail-addr>andrew&#32;morton</e-mail-addr>
			<n-messages>185</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>874KB</total-size>
			<mostly-written-at>14:20</mostly-written-at>
		</top-ccers>
		<top-ccers rank="3">
			<e-mail-addr>linus&#32;torvalds</e-mail-addr>
			<n-messages>62</n-messages>
			<avg-size>6KB</avg-size>
			<total-size>357KB</total-size>
			<mostly-written-at>15:09</mostly-written-at>
		</top-ccers>
		<top-ccers rank="4">
			<e-mail-addr>tom&#32;zanussi</e-mail-addr>
			<n-messages>37</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>182KB</total-size>
			<mostly-written-at>15:07</mostly-written-at>
		</top-ccers>
		<top-ccers rank="5">
			<e-mail-addr>bunk@stusta.de</e-mail-addr>
			<n-messages>25</n-messages>
			<avg-size>4KB</avg-size>
			<total-size>91KB</total-size>
			<mostly-written-at>15:51</mostly-written-at>
		</top-ccers>
	</top-ccers>
	<top-level-domains>
		<tld rank="1">
			<name>com</name>
			<freq>588</freq>
			<avg-size>6KB</avg-size>
			<total-size>4MB</total-size>
		</tld>
		<tld rank="2">
			<name>org</name>
			<freq>222</freq>
			<avg-size>5KB</avg-size>
			<total-size>1007KB</total-size>
		</tld>
		<tld rank="3">
			<name>de</name>
			<freq>168</freq>
			<avg-size>6KB</avg-size>
			<total-size>846KB</total-size>
		</tld>
		<tld rank="4">
			<name>net</name>
			<freq>138</freq>
			<avg-size>6KB</avg-size>
			<total-size>792KB</total-size>
		</tld>
		<tld rank="5">
			<name>cz</name>
			<freq>49</freq>
			<avg-size>6KB</avg-size>
			<total-size>270KB</total-size>
		</tld>
	</top-level-domains>
	<top-timezones>
		<tz rank="1">
			<name>+0200</name>
			<freq>486</freq>
			<avg-size>6KB</avg-size>
			<total-size>3MB</total-size>
		</tz>
		<tz rank="2">
			<name>-0400</name>
			<freq>274</freq>
			<avg-size>5KB</avg-size>
			<total-size>2MB</total-size>
		</tz>
		<tz rank="3">
			<name>-0700</name>
			<freq>270</freq>
			<avg-size>6KB</avg-size>
			<total-size>2MB</total-size>
		</tz>
		<tz rank="4">
			<name>-0500</name>
			<freq>110</freq>
			<avg-size>9KB</avg-size>
			<total-size>921KB</total-size>
		</tz>
		<tz rank="5">
			<name>+0100</name>
			<freq>87</freq>
			<avg-size>5KB</avg-size>
			<total-size>362KB</total-size>
		</tz>
	</top-timezones>
	<top-organisations>
		<org rank="1">
			<name>kihon&#32;technologies</name>
			<freq>17</freq>
			<bytes>70KB</bytes>
		</org>
		<org rank="2">
			<name>sgi</name>
			<freq>16</freq>
			<bytes>64KB</bytes>
		</org>
		<org rank="3">
			<name>www.scatter.mine.nu</name>
			<freq>15</freq>
			<bytes>56KB</bytes>
		</org>
		<org rank="4">
			<name>opersys&#32;inc.</name>
			<freq>11</freq>
			<bytes>41KB</bytes>
		</org>
		<org rank="5">
			<name>firmix&#32;software&#32;gmbh</name>
			<freq>9</freq>
			<bytes>33KB</bytes>
		</org>
	</top-organisations>
	<top-user-agents>
		<useragent rank="1">
			<name>mozilla</name>
			<freq>53</freq>
			<bytes>865KB</bytes>
		</useragent>
		<useragent rank="2">
			<name>mutt/1.5.9i</name>
			<freq>36</freq>
			<bytes>851KB</bytes>
		</useragent>
		<useragent rank="3">
			<name>evolution</name>
			<freq>30</freq>
			<bytes>784KB</bytes>
		</useragent>
		<useragent rank="4">
			<name>mozilla/5.0</name>
			<freq>23</freq>
			<bytes>483KB</bytes>
		</useragent>
		<useragent rank="5">
			<name>sylpheed</name>
			<freq>14</freq>
			<bytes>594KB</bytes>
		</useragent>
	</top-user-agents>
	<messages-per-day>
		<Sunday><msgs>120</msgs><bytes>694KB</bytes></Sunday>
		<Monday><msgs>240</msgs><bytes>2MB</bytes></Monday>
		<Tuesday><msgs>304</msgs><bytes>2MB</bytes></Tuesday>
		<Wednesday><msgs>230</msgs><bytes>2MB</bytes></Wednesday>
		<Thursday><msgs>262</msgs><bytes>2MB</bytes></Thursday>
		<Friday><msgs>228</msgs><bytes>2MB</bytes></Friday>
		<Saturday><msgs>105</msgs><bytes>576KB</bytes></Saturday>
	</messages-per-day>
	<messages-per-month>
		<Jan><msgs>0</msgs><bytes>0</bytes></Jan>
		<Feb><msgs>0</msgs><bytes>0</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>1489</msgs><bytes>8MB</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>2</msgs><bytes>8KB</bytes></day-3>
		<day-4><msgs>2</msgs><bytes>6KB</bytes></day-4>
		<day-5><msgs>3</msgs><bytes>10KB</bytes></day-5>
		<day-6><msgs>0</msgs><bytes>0</bytes></day-6>
		<day-7><msgs>1</msgs><bytes>3KB</bytes></day-7>
		<day-8><msgs>1</msgs><bytes>4KB</bytes></day-8>
		<day-9><msgs>0</msgs><bytes>0</bytes></day-9>
		<day-10><msgs>0</msgs><bytes>0</bytes></day-10>
		<day-11><msgs>17</msgs><bytes>70KB</bytes></day-11>
		<day-12><msgs>37</msgs><bytes>159KB</bytes></day-12>
		<day-13><msgs>13</msgs><bytes>63KB</bytes></day-13>
		<day-14><msgs>18</msgs><bytes>71KB</bytes></day-14>
		<day-15><msgs>30</msgs><bytes>268KB</bytes></day-15>
		<day-16><msgs>16</msgs><bytes>110KB</bytes></day-16>
		<day-17><msgs>25</msgs><bytes>237KB</bytes></day-17>
		<day-18><msgs>18</msgs><bytes>76KB</bytes></day-18>
		<day-19><msgs>7</msgs><bytes>30KB</bytes></day-19>
		<day-20><msgs>33</msgs><bytes>169KB</bytes></day-20>
		<day-21><msgs>62</msgs><bytes>283KB</bytes></day-21>
		<day-22><msgs>174</msgs><bytes>922KB</bytes></day-22>
		<day-23><msgs>89</msgs><bytes>467KB</bytes></day-23>
		<day-24><msgs>93</msgs><bytes>450KB</bytes></day-24>
		<day-25><msgs>203</msgs><bytes>2MB</bytes></day-25>
		<day-26><msgs>257</msgs><bytes>2MB</bytes></day-26>
		<day-27><msgs>184</msgs><bytes>2MB</bytes></day-27>
		<day-28><msgs>181</msgs><bytes>982KB</bytes></day-28>
		<day-29><msgs>23</msgs><bytes>208KB</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>31</msgs><bytes>161KB</bytes></hour-1>
		<hour-2><msgs>25</msgs><bytes>259KB</bytes></hour-2>
		<hour-3><msgs>16</msgs><bytes>64KB</bytes></hour-3>
		<hour-4><msgs>13</msgs><bytes>50KB</bytes></hour-4>
		<hour-5><msgs>9</msgs><bytes>34KB</bytes></hour-5>
		<hour-6><msgs>12</msgs><bytes>84KB</bytes></hour-6>
		<hour-7><msgs>17</msgs><bytes>68KB</bytes></hour-7>
		<hour-8><msgs>53</msgs><bytes>258KB</bytes></hour-8>
		<hour-9><msgs>62</msgs><bytes>240KB</bytes></hour-9>
		<hour-10><msgs>105</msgs><bytes>758KB</bytes></hour-10>
		<hour-11><msgs>89</msgs><bytes>406KB</bytes></hour-11>
		<hour-12><msgs>83</msgs><bytes>476KB</bytes></hour-12>
		<hour-13><msgs>82</msgs><bytes>390KB</bytes></hour-13>
		<hour-14><msgs>77</msgs><bytes>416KB</bytes></hour-14>
		<hour-15><msgs>93</msgs><bytes>559KB</bytes></hour-15>
		<hour-16><msgs>133</msgs><bytes>651KB</bytes></hour-16>
		<hour-17><msgs>77</msgs><bytes>408KB</bytes></hour-17>
		<hour-18><msgs>63</msgs><bytes>333KB</bytes></hour-18>
		<hour-19><msgs>55</msgs><bytes>240KB</bytes></hour-19>
		<hour-20><msgs>79</msgs><bytes>622KB</bytes></hour-20>
		<hour-21><msgs>70</msgs><bytes>329KB</bytes></hour-21>
		<hour-22><msgs>77</msgs><bytes>373KB</bytes></hour-22>
		<hour-23><msgs>78</msgs><bytes>413KB</bytes></hour-23>
	</messages-per-hour>
	<urls>
		<url-1><freq>1082</freq><url>http://vger.kernel.org/majordomo-info.html</url></url-1>
		<url-2><freq>1081</freq><url>http://www.tux.org/lkml/</url></url-2>
		<url-3><freq>26</freq><url>ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.13-rc3/2.6.13-rc3-mm1/</url></url-3>
		<url-4><freq>11</freq><url>http://enigmail.mozdev.org</url></url-4>
		<url-5><freq>8</freq><url>http://www.zip.com.au/~akpm/linux/patches/stuff/2.6.13-rc3-mm1.gz</url></url-5>
	</urls>
	<top-avg-resp>
		<resp-pers rank="1">
			<name>christos&#32;gentsis</name>
			<avg-resp-time>00:02:59</avg-resp-time>
			<n-replies>1</n-replies>
		</resp-pers>
		<resp-pers rank="2">
			<name>dave&#32;airlie</name>
			<avg-resp-time>00:04:40</avg-resp-time>
			<n-replies>1</n-replies>
		</resp-pers>
		<resp-pers rank="3">
			<name>fawad&#32;lateef</name>
			<avg-resp-time>00:06:26</avg-resp-time>
			<n-replies>1</n-replies>
		</resp-pers>
		<resp-pers rank="4">
			<name>andrew&#32;haninger</name>
			<avg-resp-time>00:06:48</avg-resp-time>
			<n-replies>3</n-replies>
		</resp-pers>
		<resp-pers rank="5">
			<name>jiri&#32;slaby</name>
			<avg-resp-time>00:08:16</avg-resp-time>
			<n-replies>3</n-replies>
		</resp-pers>
		<resp-pers rank="6">
			<name>nick&#32;sillik</name>
			<avg-resp-time>00:11:23</avg-resp-time>
			<n-replies>1</n-replies>
		</resp-pers>
	</top-avg-resp>
	<created-with><name>mboxstats</name><version>2.8</version><developer>folkert@vanheusden.com</developer><url>http://www.vanheusden.com/mboxstats/</url></created-with>
</mailbox-stats>

<section
  title="Guide To Using Whitespace In Kernel Sources"
  subject="kernel guide to space"
  archive="http://groups.google.com/group/linux.kernel/msg/6455219f71204d05?hl=en"
  posts="38"
  startdate="11 Jul 2005 06:56:16 -0800"
  enddate="22 Jul 2005 17:30:51 -0800"
>

<p>Michael S. Tsirkin said:</p>

<quote who="Michael S. Tsirkin">

I've been tasked with edicating some new hires on linux kernel coding style.
While we have Documentation/CodingStyle, it skips detail that is supposed to
be learned by example.

Since I've been burned by this a couple of times myself till I learned,
I've put together a short list of rules complementing Documentation/CodingStyle.
This list is attached, below.

Please cc me directly with comments, if any.

</quote>

<p>He gave a link to his <a href="http://www.mellanox.com/mst/boring.txt">list
of rules</a>, and various folks offered suggestions of greater or lesser
obscurity.</p>

</section>

<section
  title="RelayFS Likely To Go Into -mm"
  subject="Merging relayfs?"
  archive="http://groups.google.com/group/fa.linux.kernel/msg/2510955159f258f7?hl=en"
  posts="89"
  startdate="11 Jul 2005 17:10:42 -0800"
  enddate="25 Jul 2005 21:15:51 -0800"
>
<topic>Networking</topic>

<mention>Christoph Hellwig</mention>

<p>Tom Zanussi said to Andrew Morton:</p>

<quote who="Tom Zanussi">

<p>can you please merge relayfs? It provides a low-overhead logging and
buffering capability, which does not currently exist in the kernel.</p>

<p>relayfs key features:</p>

<ul>

<li>Extremely efficient high-speed logging/buffering</li>
<li>Simple mechanism for user-space data retrieval</li>
<li>Very short write path</li>
<li>Can be used in any context, including interrupt context</li>
<li>No runtime resource allocation</li>
<li>Doesn't do a kmalloc for each "packet"</li>
<li>No need for end-recipient</li>
<li>Data may remain buffered whether it is consumed or not</li>
<li>Data committed to disk in bulk, not per "packet"</li>
<li>Can be used in circular-buffer mode for flight-recording</li>

</ul>

<p>The relayfs code has been in -mm for more than three months following
the extensive review that took place on LKML at the beginning of the year,
at which time we addressed all of the issues people had. Since then only a
few minor patches to the original codebase have been needed, most of which
were sent to us by users; we'd like to thank those who took the time to send
patches or point out problems.</p>

<p>The code in the -mm tree has also been pounded on very heavily through
normal use and testing, and we haven't seen any problems with it - it appears
to be very stable.</p>

<p>We've also tried to make it as easy as possible for people to create
'quick and dirty' (or more substantial) kernel logging applications.
Included is a link to an example that demonstrates how useful this can be.
In a nutshell, it uses relayfs logging functions to track kmalloc/kfree and
detect memory leaks. The only thing it does in the kernel is to log a small
binary record for each kmalloc and kfree. The data is then post-processed in
user space with a simple Perl script. You can see an example of the output
and the example itself here:</p>

<p><a
href="http://relayfs.sourceforge.net/examples.html#kleak">http://relayfs.sourceforge.net/examples.html#kleak</a></p>

<p>Last but not least, it's still small (40k worth of source), self-contained
and unobtrusive to the rest of the kernel.</p>

<p>In summary, relayfs is very stable, is useful to current users and with
inclusion, would be useful to many others. If you can think of anything
we've overlooked or should work on to get relayfs to the point of inclusion,
please let us know.</p>

</quote>

<p>Andrew said he was willing, but asked, <quote who="Andrew Morton">Would
you have time to prepare a list of existing and planned applications?</quote>
Dave Airlie replied:</p>

<quote who="Dave Airlie">

<p>I have a plan to use it for something that no-one knows about yet..</p>

<p>I was going to use it for doing a DRM packet debug logger... to try and
trace hangs in the system, using printk doesn't really help as guess what
it slows the machine down so much that your races don't happen... I wrote
some basic code for this already.. and I'm hoping to use some work time to
get it finished at some stage...</p>

</quote>

<p>Baruch Even also said, <quote who="Baruch Even">I'm using relayfs
during my development work to log the current TCP stack parameters and
timing information. There is no reason that I can see to merge this into
the kernel, but it's very useful for my development work. I'd like to see
relayfs merged.</quote> And Tom also added:</p>

<quote who="Tom Zanussi">

<p>I know that systemtap (<a
href="http://sourceware.org/systemtap/">http://sourceware.org/systemtap/</a>)
is using relayfs and that LTT (<a
href="http://www.opersys.com/ltt/index.html">http://www.opersys.com/ltt/index.html</a>)
is also currently being reworked to use it.</p>

<p>I've also added a couple of people to the cc: list that I've consulted
with in getting their applications to use relayfs, one of which is the logdev
debugging device recently posted to LKML.</p>

<p>I also know that there are still users of the old relayfs around; I don't
however know what their plans are regarding moving to the new relayfs.</p>

<p>My own personal interest is to start playing around with creating some
visualization tools using data gathered from relayfs. Hopefully, I'll have
more time to do that if relayfs gets merged. ;-)</p>

</quote>

<p>Elsewhere, Christoph Hellwig remarked that the code itself looked
very good. And close by, Andrew remarked that he was inclined to merge
RelayFS even without a large contingent of users, because <quote who="Andrew
Morton">relayfs is more for in-kernel "applications" than for userspace ones,
if you like.</quote></p>

<p>Elsewhere, Jason Baron objected,
<quote who="Jason Baron">regarding its use of vmap, <a
href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=110755199913216&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=110755199913216&amp;w=2</a>
On x86, the vmap space is at a premium, and this space is reserved over
the entire lifetime of a 'channel'. Is the use of vmap really critical for
performance?</quote> Tom confirmed:</p>

<quote who="Tom Zanussi">

<p>Yes, the vmap'ed area is reserved over the lifetime of the channel,
but the typical usage of a channel is transient - allocate it at the start
of say a tracing run, and then vunmap it and free the memory when done.
Unless you're using huge buffers, you wouldn't run into a problem running out
of vmalloc space, and typical applications should be able to use relatively
small buffers.</p>

<p>I don't really know how we would get around using vmap - it seems like
the alternatives, such as managing an array of pages or something like that,
would slow down the logging path too much to make it useful as a low overhead
logging mechanism. I you have any ideas though, please let me know.</p>

</quote>

<p>Steven Rostedt remarked, <quote who="Steven Rostedt">My logdev device was
pretty quick! The managing of the pages were negligible to the copying of the
data to the buffer. Although, sometimes you needed to copy across buffers,
but this too wouldn't be too much of an impact.</quote> He also said in a
different post:</p>

<quote who="Steven Rostedt">

<p>I believe that (Tom correct me if I'm wrong) the use of vmap was to allocate
a large buffer without risking failing to allocate. Since the buffer does
not need to be in continuous pages. If this is a problem, maybe Tom can use
my buffer method to make a buffer :-)</p>

<p>See <a
href="http://www.kihontech.com/logdev">http://www.kihontech.com/logdev</a>
where my logdev debugging tool that allocates separate pages and uses an
accounting system instead of the more efficient vmalloc to keep the data
in the pages together. I'm currently working with Tom to get this to use
relayfs as the back end. But here you can take a look at how the buffering
works and it doesn't waste up vmalloc.</p>

</quote>

<p>Rom replied, <quote who="Tom Zanussi">The main reason we use vmap is so
that from the kernel side we have a nice contiguous address range to log to
even though the the pages aren't actually contiguous.</quote> He added, <quote
who="Tom Zanussi">It might be worthwhile to try out different alternatives and
compare them, but I'm pretty sure we won't be able to beat what's already in
relayfs. The question is I guess, how much slower would be acceptable?</quote>
Steven replied, <quote who="Steven Rostedt">I totally agree that the vmalloc
way is faster, but I would also argue that the accounting to handle the
separate pages would not even be noticeable with the time it takes to do
the actual copying into the buffer. So if the accounting adds 3ns on top
of 500ns to complete, I don't think people will mind.</quote> Tom replied,
<quote who="Tom Zanussi">OK, it sounds like something to experiment with -
I can play around with it, and later submit a patch to remove vmap if it
works out.</quote></p>

<p>Elsewhere along a different train of thought, Bert Hubert said:</p>

<quote who="Bert Hubert">

<p>I'm running into a wall with relayfs, which I intend to use to
convey large amounts of disk statistics towards userspace.</p>

<p>Now, I've read Documentation/filesystems/relayfs.txt many times over, and I
don't get it.</p>

<p>It appears there is relayfs, and 'klog' on top of that. It also appears that
to access relayed data from the kernel in userspace there is librelay.c.</p>

<p>On reading librelay.c, I find code sending and receiving netlink
messages, but relayfs.txt doesn't even contain the word netlink!</p>

<p>I then launched the 'kleak-app' sample program, but told it to look at
/relay/diskstat* instead of its own file, but it gives me unspecified
netlink errors.</p>

<p>Things I need to know, and which I hope to find documented somewhere:</p>

<ol>

<li>Do I need to do the netlink thing?</li>
<li>What kind of messages do I need to send/receive?</li>
<li>What is the exact format userspace sees in the relayfs file? Iow, can I
   access that file w/o using librelay.c?</li>
<li>What are the semantics for reading from that file?</li>
<li>When using klog, is there only one channel?</li>
<li>does librelay.c talk to regular relayfs or to klog?</li>

</ol>

<p>Don't get me wrong, relayfs sure looks nice for what I'm trying to do but
from userspace it is sort of a black box right now..</p>

</quote>

<p>Tom answered a lot of Bert's specific questions, and Bert posted a patch to
add some real documentation for the filesystem.</p>

</section>

<section
  title="Linux 2.6.13-rc3-mm1 Released; Some Consideration Of CKRM"
  subject="2.6.13-rc3-mm1"
  archive="http://groups.google.com/group/linux.kernel/msg/625dd3ce3fc6bf80?hl=en"
  posts="91"
  startdate="15 Jul 2005 00:36:53 -0800"
  enddate="28 Jul 2005 04:56:13 -0800"
>
<topic>Kernel Release Announcement</topic>
<topic>Ottawa Linux Symposium</topic>
<topic>Version Control</topic>

<mention>Alan Cox</mention>

<p>Andrew Morton announced Linux 2.6.13-rc3-mm1, saying:</p>

<quote who="Andrew Morton">

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

<p>(<a
href="http://www.zip.com.au/~akpm/linux/patches/stuff/2.6.13-rc3-mm1.gz">http://www.zip.com.au/~akpm/linux/patches/stuff/2.6.13-rc3-mm1.gz</a>
until kernel.org syncs up)</p>

<ul>

<li>Added the CKRM patches. This is just here for people to look at at
this stage.</li>

</ul>

</quote>

<p>Christoph Hellwig asked, <quote who="Christoph Hellwig">Andrew, do we
really need to add every piece of crap lying on the street to -mm? It's far
away from mainline enough already without adding obviously unmergeable stuff
like this.</quote> Andrew replied:</p>

<quote who="Andrew Morton">

<p>My gut reaction to ckrm is the same as yours. But there's been a lot
of work put into this and if we're to flatly reject the feature then the
developers are owed a much better reason than "eww yuk".</p>

<p>Otherwise, if there are certain specific problems in the code then it's
best that they be pointed out now rather than later on.</p>

<p>What, in your opinion, makes it "obviously unmregeable"?</p>

</quote>

<p>Paul Jackson replied:</p>

<quote who="Paul Jackson">

<p>Thanks to some earlier discussions on the relation of CKRM with cpusets,
I've spent some time looking at CKRM. I'm not Christoph, but perhaps my
notes will be of some use in this matter.</p>

<p>CKRM is big, it's difficult for us mere mortals to understand, and it
has attracted only limited review - inadequate review in proportion to its
size and impact. I tried, and failed, sometime last year to explain some of
what I found difficult to grasp of CKRM to the folks doing it. See further
an email thread entitled:</p>

<p>    Classes: 1) what are they, 2) what is their name?<br />
    <a href="http://sourceforge.net/mailarchive/forum.php?thread_id=5328162&amp;forum_id=35191">http://sourceforge.net/mailarchive/forum.php?thread_id=5328162&amp;forum_id=35191</a></p>

<p>on the ckrm-tech@lists.sourceforge.net email list between Aug 14 and Aug
27, 2004</p>

<p>As to its size, CKRM is in a 2.6.5 variant of SuSE that I happen to be
building just now for other reasons. The source files that have 'ckrm'
in the pathname, _not_ counting Doc files, total 13044 lines of text.
The CONFIG_CKRM* config options add 144 Kbytes to the kernel text.</p>

<p>The CKRM patches in 2.6.13-rc3-mm1 are similar in size. These patch
files total 14367 lines of text.</p>

<p>It is somewhat intrusive in the areas it controls, such as some large
ifdef's in kernel/sched.c.</p>

<p>The sched hooks may well impact the cost of maintaining the sched code,
which is always a hotbed of Linux kernel development. However others who
work in that area will have to speak to that concern.</p>

<p>I tried just now to read through the ckrm hooks in fork, to see what sort
of impact they might have on scalability on large systems. But I gave up
after a couple layers of indirection. I saw several atomic counters and a
couple of spinlocks that I suspect (not at all sure) lay on the fork main
code path. I'd be surprised if this didn't impact scalability. Earlier,
according to my notes, I saw mention of lmbench results in the OLS 2004
slides, indicating a several percent cost of available cpu cycles.</p>

<p>A feature of this size and impact needs to attract a fair bit of discussion,
because it is essential to a variety of people, or because it is intriguing
in some other way.</p>

<p>I suspect that the main problem is that this patch is not a mainstream
kernel feature that will gain multiple uses, but rather provides support for
a specific vendor middleware product used by that vendor and a few closely
allied vendors. If it were smaller or less intrusive, such as a driver,
this would not be a big problem. That's not the case.</p>

<p>The threshold of what is sufficient review needs to be set rather high
for such a patch, quite a bit higher than I believe it has obtained so far.
It will not be easy for them to obtain that level of review, until they get
better at arousing the substained interest of other kernel developers.</p>

<p>There may well be multiple end users and applications depending on CKRM, but
I have not been able to identify how many separate vendors provide middleware
that depends on CKRM. I am guessing that only one vendor has a serious
middleware software product that provides full CKRM support. Acceptance of
CKRM would be easier if multiple competing middleware vendors were using it.
It is also a concern that CKRM is not really usable for its primary intended
purpose except if it is accompanied by this corresponding middleware, which
I presume is proprietary code. I'd like to see a persuasive case that CKRM
is useful and used on production systems not running substantial sole sourced
proprietary middleware.</p>

<p>The development and maintenance costs so far of CKRM appear (to this
outsider) to have been substantial, which suggests that the maintenance
costs of CKRM once in the kernel would be non-trivial. Given the size of
the project, its impact on kernel code, and the rather limited degree to
which developers outside of the CKRM project have participated in CKRM's
development or review, this could either leave the Linux kernel overly
dependent on one vendor for maintaining CKRM, or place an undo maintenance
burden on other kernel developers.</p>

<p>CKRM is in part a generalization and descendent of what I call fair
share schedulers. For example, the fork hooks for CKRM include a forkrates
controller, to slow down the rate of forking of tasks using too much
resources.</p>

<p>No doubt the CKRM experts are already familiar with these, but for the
possible benefit of other readers:</p>

<blockquote>

<p>  UNICOS Resource Administration - Chapter 4. Fair-share Scheduler<br />
  <a href="http://oscinfo.osc.edu:8080/dynaweb/all/004-2302-001/@Generic__BookTextView/22883">http://oscinfo.osc.edu:8080/dynaweb/all/004-2302-001/@Generic__BookTextView/22883</a></p>

<p>  SHARE II -- A User Administration and Resource Control System for UNIX<br />
  <a href="http://www.c-side.com/c/papers/lisa-91.html">http://www.c-side.com/c/papers/lisa-91.html</a></p>

<p>  Solaris Resource Manager White Paper<br />
  <a href="http://wwws.sun.com/software/resourcemgr/wp-mixed/">http://wwws.sun.com/software/resourcemgr/wp-mixed/</a></p>

<p>  ON THE PERFORMANCE IMPACT OF FAIR SHARE SCHEDULING<br />
  <a href="http://www.cs.umb.edu/~eb/goalmode/cmg2000final.htm">http://www.cs.umb.edu/~eb/goalmode/cmg2000final.htm</a></p>

<p>  A Fair Share Scheduler, J. Kay and P. Lauder<br />
  Communications of the ACM, January 1988, Volume 31, Number 1, pp 44-55.</p>

</blockquote>

<p>The documentation that I've noticed (likely I've missed something) doesn't
do an adequate job of making the case - providing the motivation and context
essential to understanding this patch set.</p>

<p>Because CKRM provides an infrastructure for multiple controllers (limiting
forks, memory allocation and network rates) and multiple classifiers and
policies, its critical interfaces have rather generic and abstract names.
This makes it difficult for others to approach CKRM, reducing the rate of peer
review by other Linux kernel developers, which is perhaps the key impediment to
acceptance of CKRM. If anything, CKRM tends to be a little too abstract.</p>

<p>Inclusion of diffstat output would help convey to others the scope of
the patchset.</p>

<p>My notes from many months ago indicate something about a 128 CPU limit
in CKRM. I don't know why, nor if it still applies. It is certainly a
smaller limit than the systems I care about.</p>

<p>A major restructuring of this patch set could be considered, This might
involve making the metric tools (that monitor memory, fork and network
usage rates per task) separate patches useful for other purposes. It might
also make the rate limiters in fork, alloc and network i/o separately useful
patches. I mean here genuinely useful and understandable in their own right,
independent of some abstract CKRM framework.</p>

<p>Though hints have been dropped, I have not seen any public effort to
integrate CKRM with either cpusets or scheduler domains or process accounting.
By this I don't mean recoding cpusets using the CKRM infrastructure; that
proposal received _extensive_ consideration earlier, and I am as certain as
ever that it made no sense. Rather I could imagine the CKRM folks extending
cpusets to manage resources on a per-cpuset basis, not just on a per-task
or task class basis. Similarly, it might make sense to use CKRM to manage
resources on a per-sched domain basis, and to integrate the resource tracking
of CKRM with the resource tracking needs of system accounting.</p>

</quote>

<p>And Mark Hahn said:</p>

<quote who="Mark Hahn">

<p>CKRM is all about resolving conflicting resource
demands in a multi-user, multi-server, multi-purpose machine.  this is a
huge undertaking, and I'd argue that it's completely inappropriate for
*most* servers.  that is, computers are generally so damn cheap that
the clear trend is towards dedicating a machine to a specific purpose,
rather than running eg, shell/MUA/MTA/FS/DB/etc all on a single machine.</p>

<p>this is *directly* in conflict with certain prominent products, such as
the Altix and various less-prominent Linux-based mainframes.  they're all
about partitioning/virtualization - the big-iron aesthetic of splitting up
a single machine.  note that it's not just about "big", since cluster-based
approaches can clearly scale far past big-iron, and are in effect statically
partitioned.  yes, buying a hideously expensive single box, and then chopping
it into little pieces is more than a little bizarre, and is mainly based
on a couple assumptions:</p>

<ul>

<li>that clusters are hard.  really, they aren't.  they are not
        necessarily higher-maintenance, can be far more robust, usually
        do cost less.  just about the only bad thing about clusters is
        that they tend to be somewhat larger in size.</li>

<li>that partitioning actually makes sense.  the appeal is that if
        you have a partition to yourself, you can only hurt yourself.
        but it also follows that burstiness in resource demand cannot be
        overlapped without either constantly tuning the partitions or
        infringing on the guarantee.</li>

</ul>

<p>CKRM is one of those things that could be done to Linux, and will benefit a
few, but which will almost certainly hurt *most* of the community.</p>

<p>let me say that the CKRM design is actually quite good.  the issue is whether
the extensive hooks it requires can be done (at all) in a way which does
not disporportionately hurt maintainability or efficiency.</p>

<p>CKRM requires hooks into every resource-allocation decision fastpath:</p>

<ul>

<li>if CKRM is not CONFIG, the only overhead is software maintenance.</li>

<li>if CKRM is CONFIG but not loaded, the overhead is a pointer check.</li>

<li>if CKRM is CONFIG and loaded, the overhead is a pointer check
        and a nontrivial callback.</li>

</ul>

<p>but really, this is only for CKRM-enforced limits.  CKRM really wants to
change behavior in a more "weighted" way, not just causing an
allocation/fork/packet to fail.  a really meaningful CKRM needs to
be tightly integrated into each resource manager - effecting each scheduler
(process, memory, IO, net).  I don't really see how full-on CKRM can be
compiled out, unless these schedulers are made fully pluggable.</p>

<p>finally, I observe that pluggable, class-based resource _limits_ could
probably be done without callbacks and potentially with low overhead.
but mere limits doesn't meet CKRM's goal of flexible, wide-spread resource
partitioning within a large, shared machine.</p>

</quote>

<p>Paul agreed with all of this. Several folks spoke in favor of CKRM. Gerrit
Huizenga commented, <quote who="Gerrit Huizenga">CKRM's goal is to do simple
workload management both on laptops and on servers. I'm not opposed to
doing a few things overly simply as long as we get some basic capability.
And we can refine with experience. I'm definitly not looking to make CKRM
any more complex than it has to be, and yet I also want it to be useful on
a laptop, small single CPU machine, as well as larger servers.</quote></p>

<p>At one point, Alan Cox remarked that anyone could simply choose to
configure CKRM out of their kernel at compilation time. There was no need
to accept any of its drawbacks unless its benefits were more valuable to
that user. To this, Gerrit said:</p>

<quote who="Gerrit Huizenga">

<p>I'm actually trying to keep the impact of CKRM=y to near-zero, ergo only
an impact if you create classes. And even then, the goal is to keep that
impact pretty small as well.</p>

<p>And yes, a hypervisor does have a lot more overhead in many forms.
Something like an overall 2-3% everywhere, where the CKRM impact is likely to
be so small as to be hard to measure in the individual subsystems, and overall
performance impact should be even smaller. Plus you won't have to manage each
operating system instance which can grow into a pain under virtualization.
But I still maintain that both have their place.</p>

</quote>

<p>The debate continued, with no real resolution.</p>

<p>Elsewhere, regarding the kernel release, Helge Hafting reported:</p>

<quote who="Helge Hafting">

<p>I usually compile without module support. This time, I turned modules
on in order to compile an external module.</p>

<p>To my surprise, drivers/scsi/qla2xxx/qla2xxx.ko were built even though
no actual modules are selected in my .config, and the source is not patched
at all except the mm1 patch.</p>

</quote>

<p>Adrian Bunk replied, <quote who="Adrian Bunk">Known bug, alresdy fixed
in -mm3.</quote></p>

</section>

<section
  title="Adding -Wundef To CFLAGS During Kernel Compilation"
  subject="[PATCH] add -Wun-def to global CFLAGS"
  archive="http://groups.google.com/group/fa.linux.kernel/msg/f16b7a4a0807cfaf?hl=en"
  posts="5"
  startdate="21 Jul 2005 11:02:09 -0800"
  enddate="23 Jul 2005 00:52:07 -0800"
>

<p>Olaf Hering said, <quote who="Olaf Hering">A recent change to the aic scsi
driver removed two defines to detect endianness. cpp handles undefined strings
as 0. As a result, the test turned into #if 0 == 0 and the wrong code was
selected. Adding -Wundef to global CFLAGS will catch such errors.</quote>
Sam Ravnborg replied, <quote who="Sam Ravnborg">To my suprise it did not
spew out a lot of warnings in my build. In the kernel we quite consitently
use #ifdef - good! Applied.</quote> Olaf also posted another patch
to <quote who="Olaf Hering">turn many #if $undefined_string into #ifdef
$undefined_string to fix some warnings after -Wno-def was added to global
CFLAGS</quote>.</p>

</section>

<section
  title="Adding Hotswap Support To libata"
  subject="[PATCH 0/3] Add disk hotswap support to libata"
  archive="http://groups.google.com/group/linux.kernel/msg/9ba8e5541f2b9fbf?hl=en"
  posts="7"
  startdate="21 Jul 2005 13:14:12 -0800"
  enddate="28 Jul 2005 11:05:44 -0800"
>
<topic>Disks: SCSI</topic>
<topic>Serial ATA</topic>

<p>Lukasz Kosewski said:</p>

<quote who="Lukasz Kosewski">

<p>This sequence of patches will add a framework to libata to allow for
hot-swapping disks in and out.</p>

<p>There are three patches:<br />
01-promise_sataII150_support<br />
02-libata_hotswap_infrastructure<br />
03-promise_hotswap_support</p>

<p>The rationale for each will be described in following emails.</p>

<p>I encourage anyone with design ideas to come forward and contribute, and
anyone who can see concurrency problems (I will describe what I see as
issues along with the second patch) to suggest fixes.</p>

<p>Thus far, I've tested this HEAVILY with a 2.6.11.12 kernel +
2.6.11-libata-dev1.patch.  I have found no issues outstanding on that
kernel.  All testing was done with Promise SATA150 and SATAII150 Tx4/Tx2
 Plus controllers and a huge variety of Western Digital and Seagate disks.</p>

<p>I have ported my patches to 2.6.13-rc3 and 2.6.13-rc3-mm1, and have
tested on the latter as well; they work identically to the 2.6.11 tests
except for a breakage in the SCSI layer.</p>

<p>The patches I will attach apply to the latter (2.6.13-rc3-mm1) tree,
since I expect that by the time people start looking at them seriously,
the existing libata patches in that tree will have become part of
mainline.  If this is NOT the right thing to do, please tell me, and
I'll submit patches for the requested kernel version.</p>

</quote>

<p>Jeff Garzik replied, <quote who="Jeff Garzik">Pretty cool stuff!

As soon as I finish SATA ATAPI (this week[end]), I'll take a look at this.
A quick review of the patches didn't turn up anything terribly objectionable,
though :)</quote> He suggested Ccing the linux-ide mailing list on further
discussion; and Lukasz reposted the patches to that list. Meanwhile, Doug
Maxey offered to help test the patches, for which Lukasz was very grateful.</p>

</section>

<section
  title="Some Developer Disconnect Over Touchscreen Support For Sharp SL-5500"
  subject="[patch 1/2] Touchscreen support for sharp sl-5500"
  archive="http://groups.google.com/group/linux.kernel/msg/092d05c92a4499dc?hl=en"
  posts="18"
  startdate="22 Jul 2005 10:01:09 -0800"
  enddate="25 Jul 2005 22:28:39 -0800"
>
<topic>FS: sysfs</topic>
<topic>Touchscreen</topic>

<p>Pavel Machek posted a patch, saying, <quote who="Pavel Machek">This adds
support for reading ADCs (etc), neccessary to operate touch screen on Sharp
Zaurus sl-5500. Please apply.</quote> Russell King replied:</p>

<quote who="Russell King">

<p>I would like to know what the diffs are between my version (attached)
and this version before they get applied.</p>

<p>The only reason my version has not been submitted is because it lives
in the drivers/misc directory, and mainline kernel folk don't like
drivers which clutter up that directory.  In fact, I had been told
that drivers/misc should remain completely empty - which makes this
set of miscellaneous drivers homeless.</p>

</quote>

<p>Pavel checked out Russell's version, and found the diff to be quite
large. He added, <quote who="Pavel Machek">I have made quite a lot of cleanups
to touchscreen part, and it seems to be acceptable by input people. I think
it should go into drivers/input/touchscreen/collie_ts.c... Also it looks
to me like mcp.h should go into asm/arch-sa1100, so that other drivers can
use it...</quote> Dmitry Torokhov said he had some technical suggestions
and <quote who="Dmitry Torokhov">one bigger concern - I am surprised that
a driver for a physical device is implemented as an interface to a class
device. This precludes implementing any kind of power management in the driver
and pushes it into the parent and is generally speaking is a wrong thing to
do (IMHO).</quote> He said, <quote who="Dmitry Torokhov">If the problem is
that you have a single piece of hardware you need to bind several drivers
to - I guess you will have to create a new sub-device bus for that. Or just
register sub-devices on the same bus the parent device is registered on -
I am not sure what is best in this particular case - I am not familiar with
the arch. It is my understanding that the purpose of interfaces to to present
different "views" to userspace and therefore they are not quie suited for
what you are trying to do...</quote> Russell replied:</p>

<quote who="Russell King">

<p>That is exactly the problem - these kinds of devices do _not_ fit
well into the device model.  A struct device for every different
possible sub-unit is completely overkill.</p>

<p>For instance, you may logically use one ADC and some GPIO lines
on the device for X and something else for Y and they logically
end up in different drivers.</p>

<p>The problem is that the parent doesn't actually know how many
devices to create nor what to call them, and they're logically
indistinguishable from each other so there's no logical naming
system.</p>

</quote>

<p>Dmitry replied, <quote who="Dmitry Torokhov">Then we should probably not
try to force them into driver model. Have parent device register struct device
and when sub-drivers register they could attach class devices (like input
devices) directly to the "main" device thus hiding presence of sub-sections
of the chip from sysfs completely. My point is that we should not be using
class_interface here - its purpose is diferent.</quote> And Russell said:</p>

<quote who="Russell King">

<p>If you look at _my_ version, you'll notice that it doesn't use the class
interface stuff. A previous version of it did, and this seems to be what
the collie stuff is based upon.</p>

<p>What I suggest is that the collie folk need to update their driver to
my version so that we don't have two different forks of the same driver
in existance. Then we can start discussing whether things should be using
kthreads or not.</p>

</quote>

<p>Pavel said he'd take this suggestion; and as it turned out, his version
was based on an earlier version by Russell, and Pavel made plans to catch up,
and apologized for the confusion.</p>

</section>

<section
  title="Some Discussion Of Users Tracking Kernel Releases"
  subject="Question re the dot releases such as 2.6.12.3"
  archive="http://groups.google.com/group/fa.linux.kernel/msg/805b8b8649791ca6?hl=en"
  posts="8"
  startdate="25 Jul 2005 06:20:08 -0800"
  enddate="27 Jul 2005 03:11:43 -0800"
>

<p>Gene Heskett reported, <quote who="Gene Heskett">I just built what I
thought was 2.6.12.3, but my script got a tummy ache because I didn't check
the Makefile's EXTRA_VERSION, which was set to .2 in the .2 patch. Now my
2.6.12 modules will need a refresh build. :( So whats the proper patching
sequence to build a 2.6.12.3?</quote> Brian Gerst replied, <quote who="Brian
Gerst">The dot-release patches are not incremental. You apply each one to
the base 2.6.12 tree.</quote> Kurt Wall replied, <quote who="Kurt Wall">This
bit me a while back, too. I'll submit a patch to the top-level README to
spell it out.</quote> Steven Rostedt added:</p>

<quote who="Steven Rostedt">

<p>Someone should also fix the home page of kernel.org. Since there's no
link on that page that points to the full 2.6.12. Since a lot of the
patches on that page go directly against the 2.6.12 kernel and not
2.6.12.3, it would be nice to get the full source of that kernel from
the home page.</p>

<p>If I want to incremently build the 2.6.13-rc3-mm1, would I need to
download the 2.6.12 tar ball, followed by the 2.6.13-rc3 patch and then
the 2.6.13-rc3-mm1 patch and apply them that way?  If so, I can get all
the patches but the starting point.  Yes I could also download the full
version of any of these, but it still seems to make sense to include the
starting point of the patches on the home page.</p>

</quote>

<p>Valdis Kletnieks added, <quote who="Valdis Kletnieks">Even more to the point
- when 2.6.13 comes out, there will be a patch against 2.6.12, not 2.6.12.N,
which means you get to download the 2.6.12.N tarball, the 2.6.12.N patch,
patch -R that, and *then* apply the 2.6.13 patch.</quote></p>

</section>

<section
  title="Importing Older Kernel History From BitKeeper To git"
  subject="Linux BKCVS kernel history git import.."
  archive="http://groups.google.com/group/linux.kernel/msg/26fed00b25a94579?hl=en"
  posts="6"
  startdate="26 Jul 2005 10:57:43 -0800"
  enddate="27 Jul 2005 07:50:27 -0800"
>
<topic>Compression</topic>
<topic>Version Control</topic>

<p>Linus Torvalds said:</p>

<quote who="Linus Torvalds">

<p>Ok, I'm uploading my current git CVS import results to kernel.org right now,
which is my current best effort (meaning: I may try to improve on it even if
there aren't any more cvsps bugs/features I have to fix, and obviously I'll
re-create it if there _are_ cvsps or cvsimport bugs that cause the import
to have problems).</p>

<p>I've "verified" it in the sense that I've done a "git-whatchanged -p"
at various stages of the import, and it looked sane. I also compared doing a
tar-tree-export of the 2.6.12-rc2 release, which exists both in my current git
tree _and_ in the old bkcvs tree, and they compared identically apart from the
fact that the bkcvs tree has the BitKeeper/ directory and a ChangeSet file.</p>

<p>It's also pretty aggressively packed - I used "--window=50 --depth=50"
(rather than the default 10 for both) to make the archive smaller, so it's
going to be somewhat more CPU-intensive to use (due to the possibly longer
delta chains), but it got the pack-file down from 204MB to 166MB, which I
think is pretty damn good for three years of history or whatever it is.</p>

<p>Especially considering that a gzip -9'd tar-file of the 2.6.12-rc2 release
is 45MB all on its own, that archive is just 3.6 times a single tree.</p>

<p>Of course, this _is_ the cvs import, which means that it's basically just
a straight-line linearization of the real BK history, but it's a pretty good
linearization and so it's certainly useful.</p>

<p>If somebody adds some logic to "parse_commit()" to do the "fake parent"
thing, you can stitch the histories together and see the end result as one
big tree. Even without that, you can already do things like</p>

<blockquote>

<p>git diff v2.6.10..v2.6.12</p>

</blockquote>

<p>(which crosses the BK-&gt;git transition) by just copying the 166MB pack-file
over, along with the tags that come with the thing. I've not verified it,
but if that doesn't work, then it's a git bug. It _should_ work.</p>

<p>BIG NOTE! This is definitely one archive you want to "rsync" instead of
closing with a git repack. The unpacked archive is somewhere in the 2.4GB
region, and since I actually used a higher compression ratio than the default,
you'll transfer a smaller pack that way anyway.</p>

<p>It will probably take a while to mirror out (in fact, as I write this, the
DSL upload just from my local machine out still has fifteen minutes to go), but
it should be visible out there soonish. Please holler if you find any problems
with the conversion, or if you just have suggestions for improvments.</p>

<p>It actually took something like 16 hours to do the conversion on my machine
(most of it appears to have been due to CVS being slow, the git parts were
quick), so I won't re-convert for any trivial things.</p>

<p>I'm planning on doing the 2.4 tree too some day - either as a separate
branch in the same archive, or as a separate git archive, I haven't quite
decided yet. But I was more interested int he 2.6.x tree (for obvious reasons),
and before I do the 2.4.x one I'd like to give that tree some time for people
to check if the conversion was ok.</p>

<p>One thing that could be verified, for example (but that I have _not_
done), is to do a few random "git diff v2.6.x..v2.6.y" and comparing the
result with the standard diffs that are out there. Just to verify that the
archive looks ok. I assume there is some "diff-compare" out there that can
handle the fact that the files are diffed in a different order (and with
different flags) etc.</p>

</quote>

<p>Regarding the 'git diff v2.6.10..v2.6.12' command Linus posted, David
Woodhouse remarked:</p>

<quote who="David Woodhouse">

<p>That's a bit of a hack which really doesn't belong in the git
tools. It's not particularly hard to reparent the tree for real --
I'd much rather see a tool added to git which can _actually_ change
the 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 commit to have a parent of
0bcc493c633d78373d3fcf9efc29d6a710637519, and ripple the corresponding SHA1
changes up to the current HEAD.</p>

<p>Note that the latter commit ID I gave there was actually the 2.6.12-rc2
commit in Thomas' history import, not your own. Thomas has done a lot of
work on it, and it has the full names extracted from the shortlog script,
full timestamps, branch/merge history and consistent character sets in the
commit logs. I'd definitely suggest that you use that instead of the import
from bkcvs.</p>

<p><a
href="http://www.kernel.org/git/?p=linux/kernel/git/tglx/history.git;a=summary">http://www.kernel.org/git/?p=linux/kernel/git/tglx/history.git;a=summary</a></p>

</quote>

<p>Linus replied:</p>

<quote who="Linus Torvalds">

<p>I used to think I wanted to, but these days I really don't. One of the
reasons is that I expect to try to pretty up the old bkcvs conversion some
time: use the name translation from the old "shortlog" scripts etc, and see
if I can do some other improvements on the conversion (I think I'll remove
the BK files - "ChangeSet" etc).</p>

<p>And it's really much easier and more general to have a "graft" facility.
It's something that git can do trivially (literally a hook in "parse_commit"
to add a special parent), and it's actually a generic mechanism exactly for
issues like this ("project had old history in some other format").</p>

<p>Somebody already asked for having the import history for old historic
patches - which we _do_ actually have as patches, but which obviously don't
have any changelogs except for the version information. Most people may not
want that, but the thing is, with a "graft" facility, the people who _do_
want that can easily see it all, and it is totally seamless.</p>

<p>So it's not even a one-time hack - it's a real feature that just in the
kernel would have several cases we'd be able to use it for, and the same
is likely true for almost any other project that wasn't started purely
from git..</p>

</quote>

<p>David said, <quote who="David Woodhouse">OK. That works and can also be
used for the "fake _absence_ of parent" thing -- if I'm space-constrained
and want only the history back to some relatively recent point like 2.6.0,
I can do that by turning the 2.6.0 commit into an orphan instead of also
using all the rest of the history back to 2.4.0.</quote> And Linus replied:</p>

<quote who="Linus Torvalds">

<p>Yes. The grafting really should work pretty well for various things like
this, and at the same time I don't think it's ever going to be a huge problem:
people may have a couple of graft-points (if you want to drop history, you
may well have more than one point you need to "cauterize": you may not be
able to just cut it off at 2.6.0, since there may be merges furhter back in
history), but I don't think it's going to explode and become unwieldly.</p>

<p>I just don't see people having more than a few trees that they might
want to graft together, and while the "drop history" thing might cause more
issues, even that is bounded by the amount of development parallellism,
so while it probably causes more graft-points than the "join trees" usage,
it should still be just a small handful of points.</p>

</quote>

</section>

<section
  title="Linux 2.4.32-pre2 Released"
  subject="Linux 2.4.32-pre2"
  archive="http://groups.google.com/group/linux.kernel/msg/1f00524f4709110e?hl=en"
  posts="5"
  startdate="27 Jul 2005 00:05:12 -0800"
  enddate="28 Jul 2005 16:45:58 -0800"
>
<topic>Compression</topic>
<topic>SMP</topic>
<topic>USB</topic>

<mention>Larry Woodman</mention>
<mention>David S. Miller</mention>
<mention>Jakub Bogusz</mention>
<mention>Alan Stern</mention>
<mention>Pete Zaitcev</mention>

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

<quote who="Marcelo Tosatti">

<p>Here goes another -pre, after a long period.</p>

<p>A couple of USB corrections, a socket hashing bugfix and ipvs race
condition, avoidance of rare inode cache SMP race.</p>

<p>And a zlib security update (erratic changelog for that one, my fault),
whose CAN number is: CAN-2005-1849</p>

<p>Summary of changes from v2.4.32-pre1 to v2.4.32-pre2<br />
============================================</p>

<p>Alan Stern:<br />
  file_storage and UHCI bugfixes</p>

<p>David S. Miller:<br />
  [NETLINK]: Fix two socket hashing bugs.</p>

<p>Jakub Bogusz:<br />
  [SPARC64]: fix sys32_utimes(somefile, NULL)</p>

<p>Larry Woodman:<br />
  workaround inode cache (prune_icache/__refile_inode) SMP races</p>

<p>Marcelo Tosatti:<br />
  Change VERSION to 2.4.32-pre2<br />
  Merge with rsync://rsync.kernel.org/.../davem/net-2.4.git<br />
  Revert [NETLINK]: Fix two socket hashing bugs.</p>

<p>Neil Horman:<br />
  [IPVS]: Close race conditions on ip_vs_conn_tab list modification</p>

<p>Pete Zaitcev:<br />
  usb: printer double up()</p>

<p>Tim Yamin:<br />
  Merge with rsync://rsync.kernel.org/.../davem/sparc-2.4.git/<br />
  The gzip description is as good as the ChangeLog says it is -: "Set n to</p>

</quote>

</section>

</kc>

