<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="248" date="20 Jan 2004 00:00:00 -0800" />

<stats posts="1221" size="5976" contrib="389" multiples="189" lastweek="144">

<person posts="50" size="245" who="Greg KH" />
<person posts="47" size="300" who="Geert Uytterhoeven" />
<person posts="37" size="149" who="Linus Torvalds" />
<person posts="33" size="195" who="Jeff Garzik" />
<person posts="22" size="109" who="Andrew Morton" />
<person posts="20" size="75" who="Jens Axboe" />
<person posts="19" size="58" who="Mike Fedyk" />
<person posts="16" size="58" who="Christoph Hellwig" />
<person posts="16" size="58" who="Arjan van de Ven" />
<person posts="14" size="57" who="Pavel Machek" />
<person posts="14" size="53" who="William Lee Irwin III" />
<person posts="13" size="48" who="Stan Bubrouski" />
<person posts="13" size="45" who="Tomas Szepe" />
<person posts="12" size="70" who="Samuel Flory" />
<person posts="12" size="65" who="Rusty Russell" />
<person posts="12" size="51" who="Russell King" />
<person posts="12" size="47" who="Ed Sweetman" />
<person posts="12" size="45" who="Christophe Saout" />
<person posts="12" size="38" who="Bill Davidsen" />
<person posts="10" size="73" who="Muli Ben-Yehuda" />
<person posts="10" size="51" who="Davide Libenzi" />
<person posts="10" size="42" who="Peter Osterlund" />
<person posts="10" size="42" who="Dmitry Torokhov" />
<person posts="10" size="39" who="Marcelo Tosatti" />
<person posts="10" size="35" who="Omkhar Arasaratnam" />
<person posts="9" size="32" who="Libor Vanek" />
<person posts="9" size="32" who="Con Kolivas" />
<person posts="8" size="38" who=" (Joshua Kwan)" />
<person posts="8" size="29" who="Nick Piggin" />
<person posts="8" size="27" who="(viro)" />
<person posts="8" size="27" who="&quot;Eric D. Mudama&quot;" />
<person posts="7" size="97" who="John M Flinchbaugh" />
<person posts="7" size="59" who="Maneesh Soni" />
<person posts="7" size="56" who="Paolo Ornati" />
<person posts="7" size="55" who="&quot;Norman Diamond&quot;" />
<person posts="7" size="33" who="Andrey Borzenkov" />
<person posts="7" size="24" who="Vojtech Pavlik" />
<person posts="7" size="24" who="&quot;Nicklas Bondesson&quot;" />
<person posts="7" size="23" who="Mitchell Blank Jr" />
<person posts="7" size="23" who="Leon Toh" />
<person posts="7" size="23" who="Anton Blanchard" />
<person posts="7" size="21" who="Andries Brouwer" />
<person posts="7" size="20" who="=?iso-8859-2?Q?Karel_Kulhav=FD?=" />
<person posts="7" size="20" who="Andi Kleen" />
<person posts="6" size="116" who="&quot;Theodore Ts'o&quot;" />
<person posts="6" size="24" who="=?iso-8859-1?Q?J=F6rn?= Engel" />
<person posts="6" size="23" who="Duncan Sands" />
<person posts="6" size="22" who="Jesper Juhl" />
<person posts="6" size="18" who="Nigel Cunningham" />
<person posts="6" size="17" who="Rob Love" />
<person posts="6" size="15" who="walt" />
<person posts="5" size="105" who="Wim Van Sebroeck" />
<person posts="5" size="51" who="&quot;Brad House&quot;" />
<person posts="5" size="27" who="Go Taniguchi" />
<person posts="5" size="22" who="Martin Schlemmer" />
<person posts="5" size="19" who="(Valdis.Kletnieks)" />
<person posts="5" size="18" who="&quot;Guldo K&quot;" />
<person posts="5" size="18" who="Ingo Molnar" />
<person posts="5" size="17" who=" (bill davidsen)" />
<person posts="5" size="17" who="Walt H" />
<person posts="5" size="16" who="Srihari Vijayaraghavan" />
<person posts="5" size="16" who="Jonathan Kamens" />
<person posts="5" size="16" who="Pavel Machek" />
<person posts="4" size="40" who="Rob Landley" />
<person posts="4" size="32" who="Jeff Chua" />
<person posts="4" size="29" who="=?ISO-8859-1?Q?R=FCdiger_Klaehn?=" />
<person posts="4" size="25" who="Michel =?ISO-8859-1?Q?D=E4nzer?=" />
<person posts="4" size="23" who="Matthias Andree" />
<person posts="4" size="21" who="Robert Gadsdon" />
<person posts="4" size="21" who="Colin Ngam" />
<person posts="4" size="20" who="Gene Heskett" />
<person posts="4" size="18" who="Derek Foreman" />
<person posts="4" size="18" who="&quot;Marcos D. Marado Torres&quot;" />
<person posts="4" size="17" who="Willem Riede" />
<person posts="4" size="17" who="&quot;Martin J. Bligh&quot;" />
<person posts="4" size="16" who=" (Marcel Sebek)" />
<person posts="4" size="16" who="Pat Gefre" />
<person posts="4" size="15" who="Dave Jones" />
<person posts="4" size="15" who="Frank van Maarseveen" />
<person posts="4" size="13" who=" (Johannes Ruscheinski)" />
<person posts="4" size="13" who="Lukas Hejtmanek" />
<person posts="4" size="13" who="Henti Smith" />
<person posts="4" size="11" who="Paul Jakma" />
<person posts="4" size="11" who="Wakko Warner" />
<person posts="4" size="11" who="Dax Kelson" />
<person posts="4" size="11" who="Srikumar Subramanian" />
<person posts="4" size="11" who="Shawn" />
<person posts="3" size="38" who="&quot;H. Peter Anvin&quot;" />
<person posts="3" size="19" who="Ged Haywood" />
<person posts="3" size="19" who="BlaisorBlade" />
<person posts="3" size="15" who=" (Anton Ertl)" />
<person posts="3" size="15" who="Andy Isaacson" />
<person posts="3" size="13" who="Miquel van Smoorenburg" />
<person posts="3" size="13" who="Joe Korty" />
<person posts="3" size="13" who="Jeff Chua" />
<person posts="3" size="12" who="Xan" />
<person posts="3" size="12" who="Joel Jaeggli" />
<person posts="3" size="12" who=" (Jesse Barnes)" />
<person posts="3" size="12" who="Ed Tomlinson" />
<person posts="3" size="11" who="Lukas Hejtmanek" />
<person posts="3" size="10" who="Joshua Schmidlkofer" />
<person posts="3" size="10" who="&quot;Murray J. Root&quot;" />
<person posts="3" size="10" who="James Bottomley" />
<person posts="3" size="10" who="Paul Jackson" />
<person posts="3" size="9" who="Helge Hafting" />
<person posts="3" size="9" who="Javier Fernandez-Ivern" />
<person posts="3" size="9" who="(akmiller)" />
<person posts="3" size="9" who="Diego Calleja" />
<person posts="3" size="9" who="Manfred Spraul" />
<person posts="3" size="9" who="Felipe Alfaro Solana" />
<person posts="3" size="8" who="auntvini" />
<person posts="3" size="8" who="Michael Guntsche" />
<person posts="3" size="8" who="Stef van der Made" />
<person posts="3" size="8" who="John Cherry" />
<person posts="3" size="8" who="Guennadi Liakhovetski" />
<person posts="3" size="8" who="Benjamin Herrenschmidt" />
<person posts="3" size="7" who="Lennert Buytenhek" />
<person posts="3" size="7" who="&quot;David S. Miller&quot;" />
<person posts="3" size="7" who="&quot;Yahoo! Greetings&quot;" />
<person posts="2" size="49" who="&quot;John L. Fjellstad&quot;" />
<person posts="2" size="45" who="Erik Bourget" />
<person posts="2" size="39" who="Meelis Roos" />
<person posts="2" size="38" who="Nuno Alexandre" />
<person posts="2" size="31" who="John Goerzen" />
<person posts="2" size="27" who="(caszonyi)" />
<person posts="2" size="20" who="Stian Jordet" />
<person posts="2" size="19" who="Bart Samwel" />
<person posts="2" size="17" who="David Brownell" />
<person posts="2" size="12" who="Christian Trefzer" />
<person posts="2" size="11" who="&quot;g-j v dijk&quot;" />
<person posts="2" size="11" who="Daniel Tram Lux" />
<person posts="2" size="11" who="&quot;Nakajima, Jun&quot;" />
<person posts="2" size="10" who="Pawel Dziekonski" />
<person posts="2" size="10" who="Matthew Mastracci" />
<person posts="2" size="10" who="Lionel Bouton" />
<person posts="2" size="10" who="David Ford" />
<person posts="2" size="10" who="Roger Gammans" />
<person posts="2" size="9" who=" (Eric W. Biederman)" />
<person posts="2" size="9" who="Ville Herva" />
<person posts="2" size="9" who="jw schultz" />
<person posts="2" size="9" who="Matt Mackall" />
<person posts="2" size="9" who="Kronos" />
<person posts="2" size="8" who="James Bourne" />
<person posts="2" size="8" who="Claas Langbehn" />
<person posts="2" size="8" who="Karol Kozimor" />
<person posts="2" size="8" who="Martin Loschwitz" />
<person posts="2" size="8" who="Manuel Estrada Sainz" />
<person posts="2" size="8" who="Markus Kolb" />
<person posts="2" size="8" who="Andreas Dilger" />
<person posts="2" size="8" who="Andi Kleen" />
<person posts="2" size="8" who="Juergen Hasch" />
<person posts="2" size="8" who="Michael Clark" />
<person posts="2" size="8" who="Matthew Wilcox" />
<person posts="2" size="8" who="John Hawkes" />
<person posts="2" size="7" who="Mickael Marchand" />
<person posts="2" size="7" who="Bjorn Helgaas" />
<person posts="2" size="7" who="Florian Schuele" />
<person posts="2" size="7" who="Jan-Benedict Glaw" />
<person posts="2" size="7" who="Thorsten Kranzkowski" />
<person posts="2" size="7" who="Andre Hedrick" />
<person posts="2" size="7" who="&quot;James McMechan&quot;" />
<person posts="2" size="7" who="Andrea Barisani" />
<person posts="2" size="6" who="craig duncan" />
<person posts="2" size="6" who="&quot;David Schwartz&quot;" />
<person posts="2" size="6" who="Matt" />
<person posts="2" size="6" who="&quot;Yu, Luming&quot;" />
<person posts="2" size="6" who="Sean Estabrooks" />
<person posts="2" size="6" who="Anders Skovsted Buch" />
<person posts="2" size="6" who="Andreas Schwarz" />
<person posts="2" size="6" who="Erik Andersen" />
<person posts="2" size="6" who="Matthias Schniedermeyer" />
<person posts="2" size="6" who="(jpo234)" />
<person posts="2" size="6" who="Oleg Drokin" />
<person posts="2" size="5" who="Jeff Woods" />
<person posts="2" size="5" who="Matti Aarnio" />
<person posts="2" size="5" who="Shawn Starr" />
<person posts="2" size="5" who="Andre Tomt" />
<person posts="2" size="5" who="Matt Domsch" />
<person posts="2" size="5" who="Arnaldo Carvalho de Melo" />
<person posts="2" size="5" who="Francois Romieu" />
<person posts="2" size="5" who="dju`" />
<person posts="2" size="5" who="Justin Pryzby" />
<person posts="2" size="5" who="Greg Fitzgerald" />
<person posts="2" size="4" who="Petri Koistinen" />
<person posts="2" size="4" who="John Bradford" />
<person posts="2" size="4" who="DaMouse Networks" />
<person posts="2" size="4" who="Willy Tarreau" />
<person posts="2" size="4" who="Larry McVoy" />
<person posts="2" size="4" who="sogentoo" />
<person posts="1" size="52" who="Benjamin Weber" />
<person posts="1" size="48" who="Andreas Theofilu" />
<person posts="1" size="46" who="Andreas Haumer" />
<person posts="1" size="46" who="(smcguire)" />
<person posts="1" size="46" who="Tommi Virtanen" />
<person posts="1" size="38" who="Bart Schapendonk" />
<person posts="1" size="22" who="Kristof Pelckmans" />
<person posts="1" size="17" who="Ryan Lackey" />
<person posts="1" size="16" who="&quot;Durairaj, Sundarapandian&quot;" />
<person posts="1" size="16" who="(zydas)" />
<person posts="1" size="16" who="Toon van der Pas" />
<person posts="1" size="15" who="Matt Domsch" />
<person posts="1" size="14" who="Jens Benecke" />
<person posts="1" size="13" who="Dom" />
<person posts="1" size="13" who="Benjamin Henne" />
<person posts="1" size="12" who="&quot;Brian J. Murrell&quot;" />
<person posts="1" size="10" who="Gert De Keersmaecker" />
<person posts="1" size="9" who="John Hawkes" />
<person posts="1" size="8" who="Tommy Faasen" />
<person posts="1" size="7" who="&quot;Li, Adam&quot;" />
<person posts="1" size="7" who="(venom)" />
<person posts="1" size="7" who="Ramon Rey Vicente" />
<person posts="1" size="7" who="&quot;Giacomo A. Catenazzi&quot;" />
<person posts="1" size="7" who="IP v6" />
<person posts="1" size="6" who="Stephen Smalley" />
<person posts="1" size="6" who="Steven Cole" />
<person posts="1" size="6" who="Daniel Phillips" />
<person posts="1" size="5" who="Ian Pilcher" />
<person posts="1" size="5" who="Michael Hunold" />
<person posts="1" size="5" who="Andreas Unterkircher" />
<person posts="1" size="5" who="Cameron Heide" />
<person posts="1" size="5" who="&quot;Fox!MURDER&quot;" />
<person posts="1" size="5" who="Carlos =?ISO-8859-1?Q?Jim=E9nez?=" />
<person posts="1" size="4" who="Jeff Sipek" />
<person posts="1" size="4" who="&quot;Admin&quot;" />
<person posts="1" size="4" who="Isaac Claymore" />
<person posts="1" size="4" who="&quot;Branko&quot;" />
<person posts="1" size="4" who="Rusty Russell" />
<person posts="1" size="4" who="S Ait-Kassi" />
<person posts="1" size="4" who="&quot;J.A. Magallon&quot;" />
<person posts="1" size="4" who="=?iso-8859-1?q?Mr=20Amit=20Mehrotra?=" />
<person posts="1" size="4" who="&quot;Martin Bergeron&quot;" />
<person posts="1" size="4" who="Willy TARREAU" />
<person posts="1" size="4" who="Bruno Haible" />
<person posts="1" size="4" who="john stultz" />
<person posts="1" size="4" who="Vid Strpic" />
<person posts="1" size="4" who="Gregoire Favre" />
<person posts="1" size="4" who="Thomas Zehetbauer" />
<person posts="1" size="4" who="Larry Sendlosky" />
<person posts="1" size="4" who="&quot;Eduard &lt;master^shadow&gt; Roccatello&quot;" />
<person posts="1" size="4" who="adam mcmaster" />
<person posts="1" size="4" who="=?ISO-8859-1?Q?Mika_Penttil=E4?=" />
<person posts="1" size="4" who="DervishD" />
<person posts="1" size="4" who="=?iso-8859-1?q?szonyi=20calin?=" />
<person posts="1" size="4" who="&quot;Sirotkin, Alexander&quot;" />
<person posts="1" size="4" who="Gregor Paul" />
<person posts="1" size="4" who="Martin Josefsson" />
<person posts="1" size="3" who="Mihai RUSU" />
<person posts="1" size="3" who="Bob" />
<person posts="1" size="3" who="Eric" />
<person posts="1" size="3" who="Ben Collins" />
<person posts="1" size="3" who="Georgi Chorbadzhiyski" />
<person posts="1" size="3" who="Hugo Mills" />
<person posts="1" size="3" who="Srivatsa Vaddagiri" />
<person posts="1" size="3" who="Ken Moffat" />
<person posts="1" size="3" who="Stephan von Krawczynski" />
<person posts="1" size="3" who="Kiko Piris" />
<person posts="1" size="3" who=" (Martin Maney)" />
<person posts="1" size="3" who="Hollis Blanchard" />
<person posts="1" size="3" who="Mike Christie" />
<person posts="1" size="3" who="Gustavo Guillermo" />
<person posts="1" size="3" who="Nathan Poznick" />
<person posts="1" size="3" who="Andreas Theofilu" />
<person posts="1" size="3" who="Toplica =?utf-8?q?Tanaskovi=C4=87?=" />
<person posts="1" size="3" who="Nuno Silva" />
<person posts="1" size="3" who="Martin Schlemmer" />
<person posts="1" size="3" who="David Lang" />
<person posts="1" size="3" who="Antti Lankila" />
<person posts="1" size="3" who="Stuart Longland" />
<person posts="1" size="3" who="&quot;Giacomo A. Catenazzi&quot;" />
<person posts="1" size="3" who="Mathieu LESNIAK" />
<person posts="1" size="3" who="Ragnar =?iso-8859-15?Q?Kj=F8rstad?=" />
<person posts="1" size="3" who="Charles Cazabon" />
<person posts="1" size="3" who="Luiz Fernando Capitulino" />
<person posts="1" size="3" who="&quot;Randy.Dunlap&quot;" />
<person posts="1" size="3" who="Vanitha Ramaswami" />
<person posts="1" size="3" who="Jay Hlavaty" />
<person posts="1" size="3" who="Joonas Kortesalmi" />
<person posts="1" size="3" who="Doug McNaught" />
<person posts="1" size="3" who="Patrick Plattes" />
<person posts="1" size="3" who="Theodore Ts'o" />
<person posts="1" size="3" who="Jakub Jelinek" />
<person posts="1" size="3" who="Mariusz Mazur" />
<person posts="1" size="3" who="&quot;Feldman, Scott&quot;" />
<person posts="1" size="3" who="Daniel Jacobowitz" />
<person posts="1" size="3" who="Chris Shafer" />
<person posts="1" size="3" who="Patrick Gefre" />
<person posts="1" size="3" who="john moser" />
<person posts="1" size="3" who="&quot;donna&quot;" />
<person posts="1" size="3" who="David Ford" />
<person posts="1" size="3" who="Paul Mundt" />
<person posts="1" size="3" who="(Curzio.Basso)" />
<person posts="1" size="3" who="&quot;Robert L. Harris&quot;" />
<person posts="1" size="3" who="Roger Larsson" />
<person posts="1" size="3" who="bert hubert" />
<person posts="1" size="3" who="Grant Grundler" />
<person posts="1" size="3" who="Alan Cox" />
<person posts="1" size="3" who="Ivan Kokshaysky" />
<person posts="1" size="3" who="Rick Bressler" />
<person posts="1" size="3" who="Jaroslav Kysela" />
<person posts="1" size="3" who="Roman Gaufman" />
<person posts="1" size="3" who="YOSHIFUJI Hideaki / =?iso-2022-jp?B?GyRCNUhGIzFRTEAbKEI=?=" />
<person posts="1" size="3" who=" (David Wagner)" />
<person posts="1" size="3" who="John Gardiner Myers" />
<person posts="1" size="3" who="Danny Cox" />
<person posts="1" size="3" who="Jan Harkes" />
<person posts="1" size="3" who="Elwin Eliazer" />
<person posts="1" size="3" who="Jussi Laako" />
<person posts="1" size="3" who="Andreas Theofilu" />
<person posts="1" size="3" who="Simon Oosthoek" />
<person posts="1" size="3" who="chas williams (contractor)" />
<person posts="1" size="3" who="Tyler Hall" />
<person posts="1" size="3" who="John Heil" />
<person posts="1" size="2" who="&quot;Miquel van Smoorenburg&quot;" />
<person posts="1" size="2" who="Olaf Hering" />
<person posts="1" size="2" who="Markus =?ISO-8859-1?Q?H=E4stbacka?=" />
<person posts="1" size="2" who="Chuck Campbell" />
<person posts="1" size="2" who="Eugene" />
<person posts="1" size="2" who="Yaroslav Klyukin" />
<person posts="1" size="2" who="Harry McGregor" />
<person posts="1" size="2" who="Mario Vanoni" />
<person posts="1" size="2" who="Willem" />
<person posts="1" size="2" who="&quot;Dr. David Alan Gilbert&quot;" />
<person posts="1" size="2" who="Adrian Bunk" />
<person posts="1" size="2" who="Jeremy Fitzhardinge" />
<person posts="1" size="2" who="Brad Campbell" />
<person posts="1" size="2" who="Michael Buesch" />
<person posts="1" size="2" who="&quot;Remus&quot;" />
<person posts="1" size="2" who="Bartlomiej Zolnierkiewicz" />
<person posts="1" size="2" who="Colin Leroy" />
<person posts="1" size="2" who="petter wahlman" />
<person posts="1" size="2" who="&quot;Justin T. Gibbs&quot;" />
<person posts="1" size="2" who="Joseph Pingenot" />
<person posts="1" size="2" who="Trond Myklebust" />
<person posts="1" size="2" who="&quot;Art Haas&quot;" />
<person posts="1" size="2" who="Florian Weimer" />
<person posts="1" size="2" who="Tony 'Nicoya' Mantler" />
<person posts="1" size="2" who="Jesper Juhl" />
<person posts="1" size="2" who=" (Ronny V. Vindenes)" />
<person posts="1" size="2" who="Jens =?iso-8859-1?q?K=FCbler?=" />
<person posts="1" size="2" who="&quot;xander vanwiggen&quot;" />
<person posts="1" size="2" who="Tom Felker" />
<person posts="1" size="2" who="&quot;jnf&quot;" />
<person posts="1" size="2" who="=?ISO-8859-1?Q?Ren=E9_Scharfe?=" />
<person posts="1" size="2" who="Michael Stucki" />
<person posts="1" size="2" who="Tim Schmielau" />
<person posts="1" size="2" who="Adam Kropelin" />
<person posts="1" size="2" who="Jon Smirl" />
<person posts="1" size="2" who="Bernardo Innocenti" />
<person posts="1" size="2" who="Adrian Cox" />
<person posts="1" size="2" who="Marco Correia" />
<person posts="1" size="2" who="walt" />
<person posts="1" size="2" who="Neale Banks" />
<person posts="1" size="2" who="Dale Blount" />
<person posts="1" size="2" who="Disconnect" />
<person posts="1" size="2" who="Zwane Mwaikambo" />
<person posts="1" size="2" who="Matthias Urlichs" />
<person posts="1" size="2" who="Michael Heyse" />
<person posts="1" size="2" who=" &lt;gaurav_christmas@yahoo.com&gt;" />
<person posts="1" size="2" who=" (Arthur Othieno)" />
<person posts="1" size="2" who="Chris Heath" />
<person posts="1" size="2" who="Rik van Riel" />
<person posts="1" size="2" who="Juergen Quade" />
<person posts="1" size="2" who="Ian Soboroff" />
<person posts="1" size="2" who="&quot;Matt H.&quot;" />
<person posts="1" size="2" who="John Shifflett" />
<person posts="1" size="2" who="Maciej Zenczykowski" />
<person posts="1" size="2" who="&quot;Calin A. Culianu&quot;" />
<person posts="1" size="2" who="Xose Vazquez Perez" />
<person posts="1" size="2" who="Tim Cambrant" />
<person posts="1" size="2" who="Johan Sjoholm" />
<person posts="1" size="2" who="=?ISO-8859-1?B?RnJhbudvaXM=?= Boisson" />
<person posts="1" size="2" who="&quot;ALOE VERA&quot;" />
<person posts="1" size="2" who="Thomas Meyer" />
<person posts="1" size="2" who="=?iso-8859-1?q?Srinivasan=20Ramaswamy?=" />
<person posts="1" size="2" who="Han Boetes" />
<person posts="1" size="2" who="GCS" />
<person posts="1" size="2" who="Stephane Blanc" />
<person posts="1" size="2" who="John Dee" />
<person posts="1" size="2" who="Tomas Zvala" />
<person posts="1" size="2" who="Ricky Wilson" />
<person posts="1" size="2" who="Karel Kulhavy" />
<person posts="1" size="2" who="Robert Mena" />
<person posts="1" size="2" who="&quot;Cosmin Matei \(lkml\)&quot;" />
<person posts="1" size="2" who="(ynezz)" />
<person posts="1" size="2" who="(jing)" />
<person posts="1" size="2" who="Jean Delvare" />
<person posts="1" size="1" who="Eduardo Melione Abreu" />
<person posts="1" size="1" who="&quot;Auguri&quot;" />

</stats>

<intro>

<p>In response to <kcref subject="[PATCH] Updating real-time and nanokernel
maintainers" startdate="18 Dec 2003 15:14:44 -0800"/>, Karim Yaghmour
(author of <a href="http://www.oreilly.com/catalog/belinuxsys/">Building
Embedded Linux Systems</a>) sent me an email saying:</p>

<quote who="Karim Yaghmour">

<p>I was going through KT247 and noticed the summary of the real-time
maintainership discussion. Most of the summary is right on the spot and
I have nothing to add about it. The only thing I'd like to bring to your
attention is Linus' statement on the issue.</p>

<p>As I pointed out in my response to him (<a
href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107208752427058&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107208752427058&amp;w=2</a>),
Linus is making major mistakes on this issue. For example, the mail you quote
has him saying: "It's doubly discgusting with some of the people who were
trying to spread all the FUD and mis-information were doing so because they
were themselves doing a non-GPL microkernel, and they complained about how the
patents were somehow against the GPL and wanted to get community support by
trying to make out the situation to be somehow different from what it was."</p>

<p>Yet, neither I or anyone involved in this debate has ever
asked for a non-GPL microkernel. In fact, I was quoted by KT in June 2002 (<a
href="http://kt.zork.net/kernel-traffic/kt20020609_170.html#1">http://kt.zork.net/kernel-traffic/kt20020609_170.html#1</a>)
as saying: "We don't want a non-GPL real-time executive or a non-GPL OS. All
we want is the right to develop applications using our licenses as others
are for Linux."</p>

<p>In addition, Linus' claim that I'm somehow spreading FUD is contradicted
by Victor Yodaiken's own statements on the issues, as I explained in my
reply to Linus (see above URL.)</p>

<p>I do understand that given Linus' community stance, his word is worth
reporting. That being said, Linus' stance doesn't mean he's infallible and
I think KT readers would profit from having the full facts presented to
them, even when such facts show that a prominent figure of the community
is mistaken.</p>

</quote>

<p>I'm including Karim's comments (with permission) because it seems like
a relevant part of the debate. Further discussion should of course go to
linux-kernel.</p>

</intro>

<section
  title="Researching SCO's Infringement Claims"
  subject="SCO's infringing files list"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=164BI-4oP-17%40gated-at.bofh.it"
  posts="54"
  startdate="22 Dec 2003 12:42:17 -0800"
  enddate="02 Jan 2004 11:45:58 -0800"
>
<topic>Ioctls</topic>
<topic>POSIX</topic>

<mention>Alan Cox</mention>

<p>Stan Bubrouski posted a list of files the SCO claimed were infringed by
Linux. Among these were 'include/asm-i386/errno.h'. Tom Felker said, <quote
who="Tom Felker">The original errno.h, from linux-0.01, says it was taken
from minix, and goes up to 40.  Between linux-0.96c and linux-0.97, that file
was replaced with the present version, which includes the error strings and
goes up to 121.  Where did the 0.97 to present version come from?</quote> Erik
Andersen replied, <quote who="Erik Andersen">For errno.h, according to this: <a
href="http://www.geocrawler.com/archives/3/360/1997/11/0/1999771/">http://www.geocrawler.com/archives/3/360/1997/11/0/1999771/</a>.
I got Linus to add ENOMEDIUM and EMEDIUMTYPE into the
kernel for 2.0.32, as part of my work on (what was to become)
the Uniform cdrom driver, based on original work from David van Leeuwen.  <a
href="http://www.ussg.iu.edu/hypermail/linux/kernel/9704.0/0105.html">http://www.ussg.iu.edu/hypermail/linux/kernel/9704.0/0105.html</a>.
I then helped push these defines into glibc and libc5.  So at least those
two defines are clearly not SCO derived...</quote> Close by, Linus Torvalds
also said to Stan:</p>

<quote who="Linus Torvalds">

<p>Good eyes - I only analysed the ctype.h thing, and didn't look up errno.h
in the original sources. errno.h has a _big_ comment saying where the numbers
came from (and some swearwords about POSIX ;)</p>

<p>Looking at signal.h, those numbers also seem to largely match minix. Which
makes sense - I actually had access to them.</p>

<p>In both cases it's only the numbers that got copied, though. And not all
of them either - for some reason I tried to make the signal numbers match
(probably lazyness - not so much that I cared about the numbers themselves,
but about the list of signal names), but for example the SA_xxxx macros -
in the very same file - bear no relation to the minix ones.</p>

</quote>

<p>J.W. Schultz said, <quote who="J.W. Schultz">And
for the names, perhaps they would care to sue The Open Group?  <a
href="http://www.opengroup.org/onlinepubs/007904975/basedefs/signal.h.html">http://www.opengroup.org/onlinepubs/007904975/basedefs/signal.h.html</a>.
And that probably applies to the rest of these header files.</quote> Stan
replied:</p>

<quote who="Stan Bubrouski">

<p>Just to shore up what jw was talking about:</p>

<p><a href="http://www.opengroup.org/onlinepubs/007904975/basedefs/signal.h.html">http://www.opengroup.org/onlinepubs/007904975/basedefs/signal.h.html</a><br />
<a href="http://www.opengroup.org/onlinepubs/007904975/basedefs/errno.h.html">http://www.opengroup.org/onlinepubs/007904975/basedefs/errno.h.html</a><br />
<a href="http://www.opengroup.org/onlinepubs/007904975/basedefs/ctype.h.html">http://www.opengroup.org/onlinepubs/007904975/basedefs/ctype.h.html</a></p>

<p>and for a listing of all the defines the open group has (dir listing):</p>

<p><a href="http://www.opengroup.org/onlinepubs/007904975/basedefs/">http://www.opengroup.org/onlinepubs/007904975/basedefs/</a></p>

</quote>

<p>Florian Weimer also replied to J. W., saying that the comments were more of a
problem than the names. For 'errno.h', he said:</p>

<quote who="Florian Weimer">

<p>The comments were added in Linux 0.99.1, and I'm not sure what was the
source.  For example, Linux has:</p>

<pre>#define ENOTTY          25      /* Not a typewriter */</pre>

<p>Solaris:</p>

<pre>#define ENOTTY  25      /* Inappropriate ioctl for device       */</pre>

<p>Current POSIX:</p>

<pre>    [ENOTTY]
        Inappropriate I/O control operation.</pre>

<p>I couldn't find any historic Minix header files.  Minix 2 has:</p>

<pre>#define ENOTTY        (_SIGN 25)  /* inappropriate I/O control operation */</pre>

</quote>

<p>Giacomo A. Catenazzi replied:</p>

<quote who="Giacomo A. Catenazzi">

<p>In
<a href="http://www.opensource.apple.com/darwinsource/DevToolsMay2002/gcc-937.2/libiberty/strerror.c">http://www.opensource.apple.com/darwinsource/DevToolsMay2002/gcc-937.2/libiberty/strerror.c</a></p>

<pre>/* Extended support for using errno values.
   Written by Fred Fish.  fnf@cygnus.com
   This file is in the public domain.  --Per Bothner.  */
(...)
#if defined (ENOTTY)
  ENTRY(ENOTTY, "ENOTTY", "Not a typewriter"),
#endif</pre>

<p>FYI there was a proposed patch to change "Not a typewriter" to
"Inappropriate ioctl for device". Check the interesting thread of lkml:
<a href="http://www.ussg.iu.edu/hypermail/linux/kernel/0105.1/0471.html">http://www.ussg.iu.edu/hypermail/linux/kernel/0105.1/0471.html</a></p>

</quote>

<p>Linus replied:</p>

<quote who="Linus Torvalds">

<p>Something like that may well be the source of the string. Fred Fish was
active long before this timeframe (if it's the same Fred Fish - he used to
do freeware collections for the Amiga in the '80's).</p>

<p>But there were multiple libc's around (estdio, libc5, glibc..), and it
could be any of them.</p>

<p>Trying to find the kernel list archives from that timeframe would likely
clarify the issue. There were several lists back then: "linux-activists"
mailing list, and of course the "comp.os.linux" newsgroup (this was before
it split into multiple newsgroups).</p>

<p>I've found some archives for linux-activists, but no newsgroup archives
going that far back.. Anybody?</p>

</quote>

<p>Alexander Viro replied:</p>

<quote who="Alexander Viro">

<p><a
href="http://groups.google.com/advanced_group_search">http://groups.google.com/advanced_group_search</a></p>

<p>They'd done what DN had promised and never did - merged old usenet archives
into their database, all way back to '81.</p>

<p>The earliest they have on comp.os.linux is March 1992 and results of
voting on newgroup had been posted by tytso on Mar 25 1992.  There's a bogus
crosspost into (still not existing) c.o.l on Mar 21 and regular postings
starting on Mar 31.  IOW, archive goes all way back to the group creation.</p>

<p>alt.os.linux archives there start on Jan 19 1992 (newgrouped somewhere
around Jan 17, took several days to propagate).  Before that it's c.o.minix,
but by the time you are looking for migration from c.o.m should've been
over.</p>

</quote>

<p>Xose Vazquez Perez also said that Alan Cox <quote
who="Xose Vazquez Perez">used to keep some archives at: <a
href="http://ftp.linux.org.uk/pub/linux/alan/Kernel/Documents/Old-Funet-Lists/">http://ftp.linux.org.uk/pub/linux/alan/Kernel/Documents/Old-Funet-Lists/</a></quote>. Mitchell Blank Jr. also pointed out:</p>

<quote who="Mitchell Blank Jr">

<p>the linux-activists messages for that period would be in:</p>

<p><a
href="http://www.ibiblio.org/pub/historic-linux/ftp-archives/tsx-11.mit.edu/Oct-07-1996/mail-archive/linux-activists/Volume2/Linux-V2-5XX.tar.z">http://www.ibiblio.org/pub/historic-linux/ftp-archives/tsx-11.mit.edu/<br />
Oct-07-1996/mail-archive/linux-activists/Volume2/Linux-V2-5XX.tar.z</a></p>

<p>Specifically, the files "digest51[789] digest52[012]" are the neighborhood
around july 25th.  I did a quick grep for "errno" and a few strings from
the errno.h file and didn't see anything relevant pop up, though.</p>

</quote>

<p>Andries Brouwer and others found a <a
href="http://groups.google.com/groups?&amp;selm=1992Jul19.154248.9076%40serval.net.wsu.edu">relevant
post</a> from that era (July 1992), in which H. J. Lu apparently authored or
collected some errno.h changes that might have been relevant. As Mitchell
pointed out close by, <quote who="Mitchell Blank Jr">this is back when gcc
and libc were distributed together, both by H J Lu.</quote> Mitchell also
noticed that in H. J.'s announcement long ago, the file list of his patches
included 0.96bp2inc.tar.Z, <quote who="H. J. Lu">the kernel header files for
0.96b patch level 2</quote>. Mitchell said that the file <quote who="Mitchell
Blank Jr">seems to be a modified version of the 0.96bp2 header files needed in
order to work with the new gcc release (searching for that filename turns
up a message discussing it a little)  So I'm guessing that the July 25,
1992 errno.h in the linux tree is a merge from this code.  Now, does anyone
have a copy of "0.96bp2inc.tar.Z" lying around?</quote> Linus replied:</p>

<quote who="Linus Torvalds">

<p>Ok, this is the source.</p>

<p>In particular, I can re-create _exactly_ the linux-0.97 "errno.h" file by
using the "sys_errlist[]" contents from "libc-2.2.2". In particular, this
trivial loop will generate the exact (byte-for-byte) list that is in the
kernel:</p>

<pre>        int i;

        for (i = 1; i &lt; 122; i++) {
                const char *name = names[i];
                int n = strlen(name);
                char *tabs = "\t\t"+(n > 7);
                const char *expl = libc222_errlist[i];
                printf("#define\t%s%s%2d\t/* %s */\n",
                        name, tabs, i, expl);
        }</pre>

<p>here, the "names[]" array was filled in with the error names, ie</p>

<pre>        const char *names[] = { "none",
        "EPERM", "ENOENT", "ESRCH", "EINTR", "EIO", "ENXIO", "E2BIG",
        ...</pre>

<p>and the "libc222_errlist[]" array was filled in with the strings found by
just downloading the old "libc-2.2.2" binary that can still be found at</p>

<p><a href="http://www.ibiblio.org/pub/Linux/libs/oldlibs/libc-2.2.2/">http://www.ibiblio.org/pub/Linux/libs/oldlibs/libc-2.2.2/</a></p>

<p>and then just doing a "strings - libc-2.2.2" and "sys_errlist[]" will be
obvious:</p>

<pre>        static char *libc222_errlist[] = {
                "Unknown error",
                "Operation not permitted",
        ...</pre>

<p>This was literally a five-minute hack (I wrote the silly loop yesterday
to see what it does with the current "strerror()" - there is very good
correlation even today, but using the libc-2.2.2 sys_nerrlist[] you get
_exactly_ the same result).</p>

<p>So this is definitely the source of the kernel error header. It's either a
file from the libc sources, or it is literally auto-generated like the above
(I actually suspect the latter - now that I did the auto-generation it all
felt very familiar, but that may just be my brain rationalizing things. Humans
are good at rationalizing reality.).</p>

<p>Can anybody find the actual libc _sources_? Not the kernel headers that
hjl mentions (those are the old ones from _before_ the change), but the file
"libc-2.2.2.tar.Z"?</p>

<p>Anyway, we know where the kernel header comes from. Let's figure out
where the libc data comes from.</p>

</quote>

Elsewhere, and still regarding 0.96bp2inc.tar.Z, Mitchell said:

<quote who="Mitchell Blank Jr">

<p>BTW, a few more details on this file - the linux GCC 2.2.2 release was
originally announced 28-Jun-1992.  The 0.96bp2inc.tar.Z file originally
lived on the then-primary linux ftp site banjo.concert.net in directory
pub/Linux/GCC.</p>

<p>banjo stopped being an FTP server a couple months later - however,
Jonathan Magid announced on 13-Aug-1992 that the entire banjo site
was being reincarnated at host reggae.oit.unc.edu in directory
ftp/pub/pc-stuff/Linux.  Here's a copy of the announcement: <a
href="http://www.kclug.org/old_archives/linux-activists/1992/aug/1/0708.shtml">http://www.kclug.org/old_archives/linux-activists/1992/aug/1/0708.shtml</a></p>

<p>My understanding is that reggae.oit morphed at some point into
sunsite.unc.edu (which is now, of course, ibiblio.org)  Jonathan still
appears to be there, so I'm cc:ing him on this (apologies in advance if
its an intrusion, Jonathan) on the off-chance that there might still be a
1992-era archive of the linux files once hosted by banjo.</p>

<p>The only other person likely to have access to a copy is H J Lu himself
(also cc:'ed although I'm 99% sure he's still on lkml :-)</p>

</quote>

<p>Linus replied:</p>

<quote who="Linus Torvalds">

<p>Note that we really don't care about that "0.96bp2inc.tar.Z" file: that's
just the kernel headers, and 0.96b-pl2 did _not_ contain the comments yet.
But libc used to use the kernel headers for other things (for things like
system call numbers etc).</p>

<p>It's almost certainly the "libc-2.2.2.tar.Z" file that we want - that's
the one that is going to contain the sys_errlist[] lists etc. Note how this
libc-2.2.2 announcement predates the merging of the kernel header by almost
a month - the kernel header information came from libc, not the other way
around.</p>

</quote>

<p>He went on:</p>

<quote who="Linus Torvalds">

<p>Does anybody have old CD-ROM's lying around?</p>

<p>In particular, the Yggdrasil Linux/GNU/X alpha CD-ROM was apparently
released just a few months later. It would quite possibly contain the
libc-2.2.2 sources... Adam Richter is still active, and I added him to
the cc..</p>

<p>Who else was doing CD's back then? SLS? If nobody has the thing on
a web-site any more, maybe they exist in physical format on somebodys
bookshelf? The only reason that the really historic kernel archives still
exist is that people saved them, and even so we're missing versions 0.02
and 0.03, but by the latter half of -92 there were already CD-ROMs being
manufactured...</p>

<p>Of course, maybe the CD's are unreadable by now.</p>

</quote>

<p>Andries said, <quote who="Andries Brouwer">I just uploaded a
copy</quote> [of libc-2.2.2.tar.gz] <quote who="Andries Brouwer">to <a
href="ftp://ftp.win.tue.nl/pub/linux-local/libc.archive/libc/libc-222.taz">ftp://ftp.win.tue.nl/pub/linux-local/libc.archive/libc/libc-222.taz</a></quote> Linus replied:</p>

<quote who="Linus Torvalds">

<p>Yup, and I can confirm two things:</p>

<p>

<ul>

<li>the strings match 100% (well, duh, we already saw that from the binary)</li>
<li>it doesn't even have an "errno.h"</li>

</ul>

</p>

<p>that, together with the timing, pretty much proves that the kernel header
was indeed just auto-generated from sys_errlist[] of that timeframe, with
a program very much like the one I already posted.</p>

<p>Now, the libc file just says</p>

<pre>        /* This is a list of all known signal numbers.  */</pre>

<p>(which is obviously just a cut-and-paste from siglist.c n the same
directory). But it shouldn't much matter, since I don't think SCO really
is going to try to claim copyright ownership of the result of standard C
library interactions like using "sys_errlist[]".</p>

<p>(I take that back - _of_course_ they are going to try to claim ownership.
After all, they already claimed ownership of code I provably wrote).</p>

</quote>

</section>

<section
  title="Some Discussion Of Process Load Balancing And Priority Handling"
  subject="[PATCH] 2.6.0 batch scheduling, HT aware"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=15IUr-1Gt-9%40gated-at.bofh.it&amp;prev=/groups%3Fas_ugroup%3Dlinux.kernel%26as_uauthors%3DCon%2520Kolivas%26as_usubject%3D%255BPATCH%255D%25202.6.0%2520batch%2520scheduling%253A%2520HT%2520aware%26as_drbb%3Db%26as_mind%3D22%26as_minm%3DDec%26as_miny%3D2003%26as_maxd%3D22%26as_maxm%3DDec%26as_maxy%3D2003"
  posts="31"
  startdate="22 Dec 2003 16:38:21 -0800"
  enddate="02 Jan 2004 15:34:20 -0800"
>
<topic>Hyperthreading</topic>

<p>Con Kolivas said:</p>

<quote who="Con Kolivas">

<p>I've done a resync and update of my batch scheduling that is also
hyper-thread aware.</p>

<p>What is batch scheduling? Specifying a task as batch allows it to only
use cpu time if there is idle time available, rather than having a proportion
of the cpu time based on niceness.</p>

<p>Why do I need hyper-thread aware batch scheduling?</p>

<p>If you have a hyperthread (P4HT) processor and run it as two logical cpus
you can have a very low priority task running that can consume 50% of your
physical cpu's capacity no matter how high priority tasks you are running.
For example if you use the distributed computing client setiathome you
will be effectively be running at half your cpu's speed even if you run
setiathome at nice 20. Batch scheduling for normal cpus allows only idle
time to be used for batch tasks, and for HT cpus only allows idle time when
both logical cpus are idle.</p>

<p>This is not being pushed for mainline kernel inclusion, but the issue of
how to prevent low priority tasks slowing down HT cpus needs to be considered
for the mainline HT scheduler if it ever gets included. This patch provides
a temporising measure for those with HT processors, and a demonstrative way
to handle them in mainline.</p>

<p>Patch available here:<br /> <a
href="http://ck.kolivas.org/patches/2.6/2.6.0/">http://ck.kolivas.org/patches/2.6/2.6.0/</a></p>

</quote>

<p>Nick Piggin replied:</p>

<quote who="Nick Piggin">

<p>I wonder how does Intel suggest we handle this problem? Batch scheduling
aside, I wonder how to do any sort of priorities at all? I think POWER5 can do
priorities in hardware, that is the only sane way I can think of doing it.</p>

<p>I think this patch is much too ugly to get into such an elegant scheduler.
No fault to you Con because its an ugly problem.</p>

<p>How about this: if a task is "delta" priority points below a task running
on another sibling, move it to that sibling (so priorities via timeslice
start working). I call it active unbalancing! I might be able to make it
fit if there is interest. Other suggestions?</p>

</quote>

<p>Jun Nakajima replied:</p>

<quote who="Jun Nakajima">

<p>Today utilization of execution resources of a logical processor is around
60% as you can find in public papers, and it's dependent on the processor
implementation and the workload. It could be higher in the future, and their
relative priority could be much higher then. So I don't think it's a good
idea to hard code such a implementation-specific factor into the generic
scheduler code.</p>

<p>Regarding H/W-based priority, I'm not sure it's very useful especially
because so many events happen inside the processor and a set of the execution
resources required changes very rapidly at runtime, i.e. the H/W knows what
it should do to run faster at runtime, and imposing priority on those logical
processor could make them run slower.</p>

</quote>

<p>Nick said his idea would not involve hard-coding implementation-specific
stuff into the generic scheduler code; <quote who="Nick Piggin">The mechanism
would be generic, but the parameters would be arch specific</quote>. He added
that he agreed with Jun, that a hardware-based priority system would not be
entirely sufficient, if only because hardware that didn't provide the means
for a hardware-based solution would still need software to do the same thing;
so the software would need to be written regardless.</p>

<p>Elsewhere, Con replied to Nick's specific 'active unbalancing' idea,
saying, <quote who="Con Kolivas">I discussed this with Ingo and that's the
sort of thing we thought of. Perhaps a relative crossover of 10 dynamic
priorities and an absolute crossover of 5 static priorities before things
got queued together. This is really only required for the UP HT case.</quote>
Nick disagreed, and over the course of a little back-and-forth, said that the
multi-CPU situation was <quote who="Nick Piggin">the same problem. A nice
-20 process can still lose 40-55% of its performance to a nice 19 process,
a figure of 10% is probably too high and we'd really want it &lt;= 5% like
what happens with a single logical processor.</quote> And Con agreed.</p>

<p>Close by, Bill Davidsen also said:</p>

<quote who="Bill Davidsen">

<p>There are two goals here. Not having a batch process on one siling makes
sense, and I'm going to try Con's patch after I try Nick's latest.  Actually,
if they play nicely I would use both, batch would be very useful for nightly
report generation on servers.</p>

<p>But WRT the whole HT scheduling, it would seem that ideally you want
to schedule the two (or N) processes which have the lowest aggregate cache
thrash, if you had a way to determine that. I suspect that a process which
had a small itterative inner loop with a code+data footprint of 2-3k would
coexist well with almost anything else. Minimizing the FPU contention also
would improve performance, no doubt. I don't know that there are the tools
at the moment to get this information, but it seems as though until it's
available any scheduling will be working in the dark to some extent.</p>

</quote>

<p>Con said the patches would never play nicely, but they might be able
to live together in some way. Regarding the existence of tools to get the
information Bill wanted, Con added, <quote who="Con Kolivas">Impossible with
current tools.  Only userspace would have a chance of predicting this and
the simple rule we work off is that userspace can't be trusted so this does
not appear doable in the foreseeable future.</quote> Bill thought it would
be hard to make much headway without a solution to this problem.</p>

</section>

<section
  title="SysFS Class Patches To Ease Driver Support"
  subject="[PATCH] sysfs class patches - take 2 [0/5]"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=162q8-7L-17%40gated-at.bofh.it"
  posts="13"
  startdate="23 Dec 2003 13:24:59 -0800"
  enddate="29 Dec 2003 19:04:32 -0800"
>
<topic>FS: sysfs</topic>

<p>Greg KH said:</p>

<quote who="Greg KH">

<p>Here are the sysfs class patches reworked against a clean 2.6.0 tree.
I've created a class_simple.c file that contains a "simple" class device
interface.  I've then converted the tty core to use this interface (the
combo of these two patches makes for no extra code added).</p>

<p>Then there are 3 patches, adding class support for misc, mem, and vc
class devices.  As the interface to add simple class support for devices
is now so low, I feel that we do need to have mem class support as to not
special case any char device.</p>

<p>With these patches, it's now much easier for others to implement class
support for remaining char drivers/subsystems that do not have it yet.</p>

</quote>

<p>Jeff Garzik remarked, <quote who="Jeff Garzik">Interesting...  I bet
that will be useful to the iPAQ folks (I've been wading through their patches
lately), as they have created a couple ultra-simple classes for SoC devices and
such.</quote> Greg KH replied, <quote who="Greg KH">I bet it will.  I've ported
my old frame buffer patch to use it, and it saved a lot of code.</quote></p>

</section>

<section
  title="udev 011 Released"
  subject="[ANNOUNCE] udev 011 release"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=16saQ-5AR-3%40gated-at.bofh.it"
  posts="4"
  startdate="24 Dec 2003 16:56:14 -0800"
  enddate="29 Dec 2003 14:48:38 -0800"
>
<topic>FS: devfs</topic>
<topic>FS: sysfs</topic>
<topic>Hot-Plugging</topic>
<topic>Klibc</topic>
<topic>Version Control</topic>

<p>Greg KH announced:</p>

<quote who="Greg KH">

<p>I've released the 011 version of udev.  It can be found at:
        <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-011.tar.gz">kernel.org/pub/linux/utils/kernel/hotplug/udev-011.tar.gz</a></p>

<p>rpms built against Red Hat FC1 are available at:
        <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-011-1.i386.rpm">kernel.org/pub/linux/utils/kernel/hotplug/udev-011-1.i386.rpm</a>
with the source rpm at:
        <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-011-1.src.rpm">kernel.org/pub/linux/utils/kernel/hotplug/udev-011-1.src.rpm</a></p>

<p>udev is a implementation of devfs in userspace using sysfs and
/sbin/hotplug.  It requires a 2.6 kernel to run.  Please see the udev
FAQ for any questions about it:
        <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ">kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ</a></p>

<p>The major changes since the 010 release are:</p>

<p>

<ul>

<li>The _long_ time delay on startup if you used the udev init
          script is now gone.  We now fork a new process of udev for
          every device in the sysfs tree, causing any slow udev proceses
          (due to the type of device) to be not noticeable by the user.</li>

<li>The RPM package is built against klibc.  If you have any
          problems with this image, please let me know.</li>

<li>The big "always wait 1 second" problem with the 010 release is
          now pretty much fixed.  I still need some libsysfs changes to
          work around some of the delays I had to hard code in, but for
          any device that is not a partition, and has a "device"
          symlink, udev will not sleep at all.  If a device does not
          have a "device" symlink, we will wait around for a few seconds
          to see if one is going to be created or not, and then move on.
          It's the only sane way of handling the issue of not knowing
          what kinds of devices have symlinks and which ones do not.</li>

<li>fixed a few bugs when devices did not have a "device" symlink.
          Rules were getting applied when they should not have been.</li>

<li>LABEL and CALLOUT rules now no longer require the BUS key.  If
          the BUS key is not present, the LABEL or CALLOUT rule will be
          always be checked.  This allows us to use these types of rules
          for devices without a "device" symlink.</li>

<li>a few other minor tweaks and bug fixes too.</li>

</ul>

</p>

<p>Thanks again to everyone who has send me patches for this release, a
full list of everyone, and their changes is below.</p>

<p>udev development is done in a BitKeeper repository located at:
        bk://linuxusb.bkbits.net/udev</p>

<p>Daily snapshots of this tree used to be found at:
        <a href="http://www.codemonkey.org.uk/projects/bitkeeper/udev/">http://www.codemonkey.org.uk/projects/bitkeeper/udev/</a>.
But that box seems to be down now.  Hopefully it will be restored
someday.  If anyone ever wants a tarball of the current bk tree, just
email me.</p>

</quote>

</section>

<section
  title="Increasing PAGE_SIZE For 2.7"
  subject="Page Colouring (was: 2.6.0 Huge pages not working as expected)"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=179fV-1iK-23%40gated-at.bofh.it"
  posts="28"
  startdate="26 Dec 2003 13:48:03 -0800"
  enddate="29 Dec 2003 20:59:18 -0800"
>
<topic>Executable File Format</topic>
<topic>Forward Port</topic>
<topic>Virtual Memory</topic>

<mention>Hugh Dickins</mention>
<mention>Eric W. Biederman</mention>
<mention>Andrew Morton</mention>

<p>In the course of discussion, Eric W. Biederman suggested increasing
PAGE_SIZE in the kernel. Linus Torvalds replied:</p>

<quote who="Linus Torvalds">

<p>Yes. This is something I actually want to do anyway for 2.7.x. Dan Phillips
had some patches for this six months ago.</p>

<p>You have to be careful, since you have to be able to mmap "partial pages",
which is what makes it less than trivial, but there are tons of reasons to want
to do this, and cache coloring is actually very much a secondary concern.</p>

</quote>

<p>William Lee Irwin III said, <quote who="William Lee Irwin III">I've not seen
Dan Phillips' code for this. I've been hacking on something doing this since
late last December.</quote> Mike Fedyk said, <quote who="Mike Fedyk">I remember
his work on pagetable sharing, but haven't heard anything about changing
the page size from him.  Could this be what Linus is remembering?</quote>
William said, <quote who="William Lee Irwin III">Doubtful. I suspect he
may be referring to pgcl (sometimes called "subpages"), though Dan Phillips
hasn't been involved in it. I guess we'll have to wait for Linus to respond
to know for sure.</quote> And Linus said:</p>

<quote who="Linus Torvalds">

<p>I didn't see the patch itself, but I spent some time talking to Daniel
after your talk at the kernel summit. At least I _think_ it was him I was
talking to - my memory for names and faces is basically zero.</p>

<p>Daniel claimed to have it working back then, and that it actually shrank
the kernel source code. The basic approach is to just make PAGE_SIZE larger,
and handle temporary needs for smaller subpages by just dynamically allocating
"struct page" entries for them. The size reduction came from getting rid of the
"struct buffer_head", because it ends up being just another "small page".</p>

</quote>

<p>He asked Daniel Phillips for the details, and Daniel said:</p>

<quote who="Daniel Phillips">

<p>Your description is accurate.  Another reason for code size shrinkage
is getting rid of the loops across buffers in the block IO library, e.g.,
block_read_full_page.</p>

<p>Subpages only make sense for file-backed memory, which conveniently lets
the page cache keep track of subpages.  Each address_space has pages of all
the same size, which may be smaller, larger or the same as PAGE_CACHE_SIZE.
The first case, "subpages", is the interesting one.</p>

<p>An address_space with subpages has base pages of PAGE_CACHE_SIZE for its
"even" entries and up to N-1 dynamically allocated struct pages for the
"odd" entries where N is PAGE_CACHE_SIZE divided by the subpage size.
Base pages are normal members of mem_map.  Subpages are not referenced
by mem_map, but only by the page cache.  They are created by operations
such as find_or_create_page, which first creates a base page if necessary.
A counter field in the page flags of the base page keeps track of how many
subpages share a base page's physical memory; when this field goes to zero
the base page may be removed from the page cache.</p>

<p>Subpages always have a ->virtual field regardless of whether mem_map
pages do.  This is used for virt_to_phys and to locate the base page when
a subpage is freed.</p>

<p>Page fault handling doesn't change much if at all, since the faulting
address is rounded down to a physical page, which will be a base page.</p>

<p>Most of the changes for subpages are in the buffer.c page cache operations
and are largely transparent to the VMM, though PAGE_CACHE_SHIFT becomes
mapping->page_shift, which touches a lot of files.  As you noted, buffer_head
functionality can be taken over by struct page and buffers become expendible.
However it is not necessary to cross that bridge immediately; page buffer
lists continue to work though the buffer list is never longer than one.</p>

<p>With a little more work, subpages can be used to shrink mem_map: implement
a larger PAGE_CACHE_SIZE then use subpages to handle ABI problems.  In this
case faults on subpages are possible and the fault path probably needs to
know something about it.  With a larger-than-physical PAGE_CACHE_SIZE we
can finally have large buffers, though the kernel would have to be compiled
for it.  Some more work to allowing mapping->page_shift to be larger than
PAGE_CACHE_SIZE would complete the process of generalizing the page size.
My impression is, this isn't too messy, most of the impact is on faulting.
Bill and others are already familiar with this I think.  The work should
dovetail.</p>

<p>I took a stab at implementing subpages some time ago in 2.4 and got it
mostly working but not quite bootable.  I did find out roughly how invasive
the patch is, which is: not very, unless I've overlooked something major.
I'll get busy on a 2.6 prototype, and of course I'll listen attentively for
reasons why this plan won't work.</p>

</quote>

<p>Close by, William said to Linus, <quote who="William Lee Irwin III">I
did get a positive reaction from you at KS, and I've also been slaving away
at keeping this thing current and improving it when I can for a year. Would
you mind telling me what the Hell is going on here?  I guess I already know
I'm screwed beyond all hope of recovery, but I might as well get official
confirmation.</quote> Linus replied:</p>

<quote who="Linus Torvalds">

<p>I haven't even _looked_ at any 2.7.x timeframe patches, and I'm not even
going to for the next few months.</p>

<p>I don't care what does it, I want a bigger PAGE_CACHE_SIZE, and working
patches are the only thing that matters. But for now, I have my 2.6.x
blinders on.</p>

</quote>

<p>William still felt discouraged, though he supposed there was still
some hope.  Linus replied:</p>

<quote who="Linus Torvalds">

<p>Well, I don't even know what your approach is - mind giving an overview?</p>

<p>My original plan (and you can see some of it in the fact that
PAGE_CACHE_SIZE is separate from PAGE_SIZE), was to just have the page cache
be able to use bigger pages than the "normal" pages, and the normal pages
would continue to be the hardware page size.</p>

<p>However, especially with mem_map[] becoming something of a problem, and
all the problems we'd have if PAGE_SIZE and PAGE_CACHE_SIZE were different,
I suspect I'd just be happier with increasing PAGE_SIZE altogether (and
PAGE_CACHE_SIZE with it), and then just teaching the VM mapping about
"fractional pages".</p>

<p>What's your approach?</p>

</quote>

<p>William replied:</p>

<quote who="William Lee Irwin III">

<p>I presented on this at KS. Basically, it's identical to Hugh Dickins'
approach from 2000. The only difference is really that it had to be forward
ported (or unfortunately in too many cases reimplemented) to mix with current
code and features.</p>

<p>Basically, elevate PAGE_SIZE, introduce MMUPAGE_SIZE to be a nice macro
representing the hardware pagesize, and the fault handling is done with some
relatively localized complexity. Numerous s/PAGE_SIZE/MMUPAGE_SIZE/ bits
are sprinkled around, along with a few more involved changes because a large
number of distributed changes are required to handle oddities that occur when
PAGE_SIZE changes from 4KB. The more involved changes are often for things
such as the only reason it uses PAGE_SIZE is really that it just expects
4KB and says PAGE_SIZE, or that it wants some fixed (even across compiles)
size and needs updating for more general PAGE_SIZE numbers, or sometimes that
it expects PAGE_SIZE to be what a pte maps when this is now represented by
MMUPAGE_SIZE. I have a bad feeling the diligence of the original code audit
could be bearing against me (and though I'm trying to be equally diligent,
I'm not hugh).</p>

<p>The fact merely elevating PAGE_SIZE breaks numerous things makes me rather
suspicious of claims that minimalistic patches can do likewise.</p>

<p>The only new infrastructures introduced are the MMUPAGE_SIZE and a couple
of related macros (defining numbers, not structures or code) and the fault
handler implementations. The diff size is not small. The memory footprint is,
and demonstrably so (c.f. March 27 2003).</p>

<p>My 2.6 code has been heavily leveraging the pfn abstraction in its
favor to represent physical addresses measured in units of the hardware
pagesize. Generally, my maintenance approach has been incrementally advancing
the state of the thing while keeping it working on as broad a cross section
of i386 systems as I can test or get testers on. It has been verified to
run userspace on Thinkpad T21's and 16x/32GB and 32x/64GB NUMA-Q's at every
point release it's been ported to, which since 2.5.68 or so has been every
point release coming out of kernel.org.</p>

</quote>

<p>Rusty Russell asked, <quote who="Rusty Russell">Can you give an example?
One approach is to simply present a larger page size to userspace w/
getpagesize().  This does break ELF programs which have been laid out assuming
the old page size (presumably they try to mprotect the read-only sections).
On PPC, the ELF ABI already insists on a 64k boundary between such sections,
and maybe for others you could simply round appropriately and pray, or do
fine-grained protections (ie. on real pagesize) for that one case.</quote> And
William replied:</p>

<quote who="William Lee Irwin III">

<p>Apps must, of course, be relinked for that, but that's userspace. This
ABI change is largely out of the picture due to legacy binaries, user
virtualspace fragmentation (most likely an issue for 32-bit threading),
and so on. The choice of PAGE_SIZE in such schemes is also restricted
to no larger than whatever choice used for userspace linking, which is a
relatively ugly dependency. There's also a question of "smooth transition":
the only way to "incrementally deploy" it on a mixture "ready" userspace and
"unready" userspace is to turn it off. I suppose it has the minor advantage
of being trivial to program.</p>

<p>I had in mind pure kernel internal issues, not ABI.</p>

<p>The issues from raising PAGE_SIZE alone are things like interpreting
hardware descriptions in arch code, some shifts underflowing for things like
hashtables, certain drivers doing ioremap() and the like either filling
up vmallocspace or getting their math wrong, and some other drivers doing
calculations on physical addresses getting them wrong, or using PAGE_SIZE to
represent some 4KB or other fixed-size memory area interpreted by hardware,
and filesystems that assume blocksize == PAGE_SIZE or assume PAGE_SIZE is
less than some particular value (e.g.  short offsets into pages, worst
of all being signed shorts), and tripping BUG()'s in ll_rw_blk.c when
512*q-&gt;max_sectors &lt; PAGE_SIZE.</p>

<p>These issues are the bulk of the work needing to be done for the driver
and fs sweeps. Actual concerns about MMUPAGE_SIZE in drivers/ and fs/ are
rather limited in scope, though drivers/char/drm/ was somewhat painful to
get going (Zwane actually did most of this for me, as I have no DRM/DRI
-capable graphics cards at my disposal).</p>

</quote>

<p>Mike asked if there were some way for William to split his patch into smaller
chunks, and merge into Andrew Morton's -mm tree; and William said:</p>

<quote who="William Lee Irwin III">

<p>I talked about this for a little while. Basically, there is only one
concept in the entire patch, despite its large size. The vast bulk of the
"distributed changes" are s/PAGE_SIZE/MMUPAGE_SIZE/.</p>

<p>At some point I was told to keep the whole shebang rolling out of tree or
otherwise not answered by akpm and/or Linus, after I sent in what a split
up (this is actually very easy to split up file-by-file) version of what
just some of the totally trivial arch/i386/ changes would look like. The
nontrivial changes are stupid in nature, but touch "fragile" or otherwise
"scary to touch" code, and so sort of relegate them to 2.7.  This is not
entirely unjustified, as changes of a similar code impact wrt. the GDT appear
to have affected some APM systems' suspend ability (I know for a fact my
changes do not have impacts on APM suspend, but other, analogous support
issues could arise after broader testing.)</p>

<p>Basically, the MMUPAGE_SIZE introductions didn't interest anyone a while
ago, and I suspect people probably just want them all at once, since it's
unlikely people want to repeat the pain analogous to PAGE_CACHE_SIZE (I
should clarify later how this is different) where the incremental introduction
never culminated in the introduction of functionality.</p>

</quote>

</section>

<section
  title="Adaptec/DPT I2O Gone In 2.6; Replacement Sought"
  subject="Adaptec/DPT I2O Option Omitted From Linux 2.6.0 Kernel Configuration Tool"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=179fQ-1iK-11%40gated-at.bofh.it"
  posts="15"
  startdate="26 Dec 2003 15:00:23 -0800"
  enddate="02 Jan 2004 14:36:40 -0800"
>
<topic>I2O</topic>
<topic>Ioctls</topic>
<topic>PCI</topic>

<p>Leon Toh asked whatever became of the Adapec/DPT I2O option in the 2.6
kernel. It was gone. Samuel Flory replied, <quote who="Samuel Flory">The DPT
I2O driver was never converted to the new driver model.  The driver from what
I can see is a mess.  It doesn't even compile in 2.4 for a number of archs
like amd64.  A while back  a bunch of people (including myself) raised the
concern through various channels with adaptec.  In theory someone at adaptec
is working on it, but there was not an ETA.</quote> Leon started tinkering,
trying to get the thing working again under 2.6; and Samuel said, <quote
who="Samuel Flory">You might want to hold off on doing a lot of work for a bit.
I think there was a beta driver that was being passed around.</quote> He found
it in his own archives, and said he'd try to find out the current status. Go
Taniguchi replied:</p>

<quote who="Go Taniguchi">

<p>This is my patch.
<a href="http://pkgcvs.turbolinux.co.jp/~go/patch-2.6/dpt_i2o.patch">http://pkgcvs.turbolinux.co.jp/~go/patch-2.6/dpt_i2o.patch</a></p>

<p>Worked fine for me on quad xeon with 4G mem and 64bit PCI.
It include.</p>

<p>

<ul>

<li>Support 2.6 kernel and DMA-mapping</li>
<li>ioctl fix for raid tools</li>
<li>use schedule_timeout in long long loop</li>
<li>not support 64bit CPU yet.</li>

</ul>

</p>

<p>However, It may differ from the Adaptec policy (linux-scsi ML).</p>

</quote>

</section>

<section
  title="Some RAID Recommendations"
  subject="Best Low-cost IDE RAID Solution For 2.6.x? (OT?)"
  posts="18"
  startdate="28 Dec 2003 10:04:24 -0800"
  enddate="30 Dec 2003 12:58:59 -0800"
>
<topic>Disk Arrays: MD</topic>
<topic>Disk Arrays: RAID</topic>
<topic>Disks: IDE</topic>
<topic>Disks: SCSI</topic>
<topic>I2O</topic>
<topic>PCI</topic>
<topic>Serial ATA</topic>

<p>Johannes Ruscheinski said, <quote who="Johannes Ruscheinski">We're looking
for a low-cost high-reliability IDE RAID solution that works well with the
2.6.x series of kernels.  We have about 1 TB (8 disks) that we'd like to
access in a non-redundant raid mode.  Yes, I know, that lack of redundancy
and high reliability are contradictory.  Let's just say that currently we lack
the funding to do anything else but we may be able to obtain more funding for
our disk storage needs in the near future.</quote> Joel Jaeggli replied:</p>

<quote who="Joel Jaeggli">

<p>well if you currently have 1tb in 8 non-redundant drives then you using
160GB disks... no?</p>

<p>the biggest p-ata disks right now are ~320GB so you can do a ~1TB software
raid 5 stripe on a single 4 port ata controller such as a promise tx4000
using regular software raid rather than the promise raid. that would end up
being fairly inexpensive and buy you more protection.</p>

<p>linux software raid has been as releiable as anything else we've used
over the years, the lack of reliabilitiy in your situation will come entirely
from failing disks, lose one and your filesystem is toast.</p>

</quote>

<p>Johannes asked, <quote who="Johannes">why not use the hardware raid
capability of the Promise tx4000? and if we'd use software raid instead,
what would be the CPU overhead?</quote> Bert Hubert said:</p>

<quote who="Bert Hubert">

<p>For the cost differential between linux native RAID and an external device
of similar capabilities, outfit yourself with an additional CPU. I don't use
RAID5 a lot but to a modern CPU, checksumming dozens of megabytes/second is
child's play:</p>

<pre>raid5: measuring checksumming speed
   8regs     :  1479.600 MB/sec
   32regs    :   744.400 MB/sec
   pIII_sse  :  1649.200 MB/sec
   pII_mmx   :  1806.000 MB/sec
   p5_mmx    :  1915.200 MB/sec
raid5: using function: pIII_sse (1649.200 MB/sec)</pre>

<p>This is on a 800MHz Celeron, so a recent &gt;2Ghz system will do lots better
still.</p>

</quote>

<p>Arjan van de Ven also offered Johannes a word of advice, saying, <quote
who="Arjan van de Ven">be careful, almost all ata raid controllers out there
are *software raid* hidden in a binary only driver. Also generally the on-disk
format of these is quite unfortionate resulting in slower access than linux
software raid can do...</quote> H. Peter Anvin added, <quote who="H. Peter
Anvin">Not to mention, well, *proprietary*.  Consider this: with Linux swraid,
you don't have to worry about your manufacturer discontinuing your product or
going out of business; as long as you can connect your disks to a CPU using
any kind of controller you can recover your data.  If a proprietary RAID
controller croaks, and you can't get another one of the same brand/model,
you might have no more data...</quote> Wakko Warner also said:</p>

<quote who="Wakko Warner">

<p>Speaking of which, since most DIE^WIDE RAID controllers are really
software driven, it may be possible to get the sw module to read the disks
off of any controller</p>

<p>My machine at work has an onboard promise raid controller but I run linux
sw raid0 on 2 of the disks (4 total, other 2 are not in a raid)</p>

<p>I'm not sure about real hardware raid.  Like the Mylex or Adaptec (SCSI)</p>

</quote>

<p>Elsewhere, Samuel Flory also replied to Johannes' initial inquiry, saying:</p>

<quote who="Samuel Flory">

<p>It really depends on what you mean by low cost?  The ony ide raid controller
that does 8 PATA drives well under linux is the 3ware controller.  For SATA
drives you have the 3ware, and adaptec controller.</p>

<p>In theroy the highpoint 8 port sata card would be a good canidate for
software raid, but highpoint has yet to cough up an open source drive yet.</p>

<p>If you want to go the software raid route and have 2 spare pci solts.
You can go with either the high point rocket raid 454 (PATA), or the promise
SATA150 TX4.</p>

<p>I really don't recommend any of promise's cards that use use the i2o
driver, or any sort of binary only driver.</p>

<p>PS- Why not at least run software raid 5?  It takes far less cpu than
you'd think, and can save your ass.</p>

</quote>

<p>Tomas Szepe said, <quote who="Tomas Szepe">Absolutely.  With eight low-cost
IDE disks, you'd be nuts to go raid0 or linear.</quote> Johannes replied that
he'd probably go with raid5 and the Promise tx4000 card Joel had recommended,
adding, <quote who="Johannes Ruscheinski">It looks like I'll have the funding
to buy another box and another 1 TiB of disk space.</quote></p>

<p>Samuel offered some additional advice, saying, <quote who="Samuel Flory">Be
sure to run badblocks on all the disks before creating your array.  Software
raid isn't as nice about bad sectors as most hardware raid controllers.
On the other hand the md driver kicks the ass of nearly every raid controller
I've tried.</quote> Tomas mentioned that bad-sector-niceness was only worse
with <i>initial</i> bad sectors, not necessarily sectors that went bad during
the course of operation.</p>

<p>A few posts down the road, Wakko remarked, <quote who="Wakko Warner">One
thing that keeps me from using the linux raid sw is the fact it can't
be partitioned.  I thought about lvm/evms, but I'm unwilling to make an
initrd to set it up (mounting root).  Unfortunately boot loaders don't seem
to support anything other than raid1. (Mostly lilo, but I'm not sure grub
would do this either)</quote> Samuel replied, <quote who="Samuel Flory">You're
thinking of it the wrong way.  You just create a bunch of partitions and make
them into raid devices.  You shouldn't be using the entire disk or you will
break autodetection.</quote> And added, <quote who="Samuel Flory">Lilo deals
well with raid 1 devices.  I typical create a small raid 1 mirror as /boot.
Just be sure to install your bootloader on to all drives.  Newer versions
of lilo will do the right thing if told to use /dev/mdwhatever.</quote></p>

</section>

<section
  title="Status Of ATARAID In 2.6"
  subject="ataraid in 2.6.?"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=17TiB-4Pm-1%40gated-at.bofh.it"
  posts="11"
  startdate="28 Dec 2003 16:09:26 -0800"
  enddate="29 Dec 2003 14:28:29 -0800"
>
<topic>Device Mapper</topic>
<topic>Disk Arrays: LVM</topic>
<topic>Disk Arrays: RAID</topic>
<topic>FS: initramfs</topic>
<topic>FS: ramfs</topic>

<p>Nicklas Bondesson asked, <quote who="Nicklas Bondesson">Is the ataraid
framework planned to be ported to 2.6.x? If so, when could one expect
it?</quote> Arjan van de Ven replied, <quote who="Arjan van de Ven">the
plan is to have a userspace device mapper app take it's place.  As for the
timeframe; I'm looking at it but the userspace device mapper code is still a
bit of a mystory to me right now.</quote> A few posts down the road, Nicklas
replied, <quote who="Nicklas Bondesson">How do you set this (device mapping)
up using the 2.6 kernel. I like the ease of using ataraid in 2.4.x. Why not
have both alternatives as options (both ataraid and devicemapper)?</quote>
Christophe Saout replied:</p>

<quote who="Christophe Saout">

<p>I think the reason is to avoid unnecessary code duplication.  device-mapper
provides a generic method to do such things. Also the developers are heading
towards removing code from the kernel that can be done in userspace. There
are plans to remove partition detection from the kernel in 2.7 and move
the detection and setup code to a userspace program (using device-mapper)
which can be placed in the initramfs (so that the user won't notice any
difference). Ataraid detection and setup could also be placed there later.</p>

<p>If someone writes an ataraid detection and setup program in userspace it
could be placed on an initrd.</p>

<p>You can find the dmsetup tool in Sistina's device-mapper package.</p>

</quote>

<p>Arjan agreed that code duplication was the big reason not to have both
options; he added, <quote who="Arjan van de Ven">The outcome is to be a
/sbin/ataraid binary or some such that will do all the magic to detect the
raid and tell the kernel device mapper to set it all up.</quote></p>

<p>Nicklas then said, <quote who="Nicklas Bondesson">I'm planning to go
with the device mapping in 2.6.0 to setup RAID1 using my Promise TX2000
card. How do I know which device name it will choose? I have looked in
the 'devices.txt' but there is neither a ide-raid nor a specific Promise
device name mapping.</quote> And Christophe replied, <quote who="Christophe
Saout">If you cannot wait for Arjan or anybody else to write an ataraid
setup tool, you can go with dmsetup and choose any name you want (see the
dmsetup man page). The only restriction is that dmsetup creates device under
/dev/mapper, you can though use symlinks to it like LVM2 does if you need
it under /dev/ataraid or something (in your initscript). If you don't have
a better idea you can just give it the same name as before.</quote></p>

</section>

<section
  title="Problems With Accusys Drives"
  subject="ide: &quot;lost interrupt&quot; with 2.6.0"
  posts="8"
  startdate="28 Dec 2003 16:32:10 -0800"
  enddate="29 Dec 2003 11:50:28 -0800"
>
<topic>Disks: IDE</topic>

<p>Andrew Miller had some problems with his Accusys ACS7500 C5VL, ATA disk drive, and Andre Hedrick said:</p>

<quote who="Andre Hedrick">

<p>Accusys is a stolen technology from Dupli-Disk, there are law suits
pending the last time I heard.</p>

<p>If it was based on the original firmware of the Dupli-Disk, it has totally
wrong state machines for executing hdparm style callers.</p>

<p>I know the FSM's are wrong because I fixed them for Dupli-Disk.  How they
operate, I can not disclose.  But Accusys can not handle correct settings
for FSM to Taskfile.</p>

</quote>

<p>Mike Fedyk asked, <quote who="Mike Fedyk">Does that mean that if you use
taskfile on Dupli-Disk controllers that they will fail, and that disabling
taskfile access might help (is that still an option in 2.6?)</quote> And
Andre replied:</p>

<quote who="Andre Hedrick">

<p>Dupli-Disk requires taskfile access and will correctly operate.</p>

<p>Accusys is total CRAP, unless they licensed the technology proper.</p>

</quote>

<p>Elsewhere, Andrew said he contacted Accusys, and that they had <quote
who="Andrew Miller">provided me with a firmware upgrade tool and the firmware
version CDVL(as opposed to C5VL). It seems they fixed the problem with their
firmware in the latest version.  I'm not sure whether or not it is worth
fixing the 2.6.x kernels to support the broken firmware, as they seem to
offer the upgrade to all customers anyway.</quote></p>

</section>

<section
  title="Status Of 2.6 Maintainership"
  subject="2.6.0-mm2"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1822L-89t-7%40gated-at.bofh.it"
  posts="27"
  startdate="29 Dec 2003 01:32:23 -0800"
  enddate="30 Dec 2003 01:45:47 -0800"
>
<topic>Disks: SCSI</topic>
<topic>Kernel Release Announcement</topic>

<p>Andrew Morton announced 2.6.0-mm2:</p>

<quote who="Andrew Morton">

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

<p>

<ul>

<li>Added the adaptec SCSI driver update from Justin.  There's some
  disagreement over whether the changes in this patch are appropriate, but we
  may as well get some external testing underway.</li>

<li>Included an update from the ieee1394 team.  Anyone who was having
  firewire problems, please retest.</li>

<li>A couple of patches here should fix the CDROM-related problems which
  some people saw in 2.6.0-mm1.</li>

</ul>

</p>

</quote>

<p>Stef van der Made replied, <quote who="Stef van der Made">Is it possible
to use the old schema of pre1, pre2 und so weiter releases so that we can use
the incremental patch sets again.</quote> Someone explained that Andrew did
not intend to use the -mm tree as the official sources. Mike Fedyk added:</p>

<quote who="Mike Fedyk">

<p>I think Linus will be releasing the 2.6-pre kernels, and things will
continue like that until 2.7 opens up.</p>

<p>I think Andrew is trying to get all of the after 2.6.0 fixes in -mm and
tested before syncing up with Linus.</p>

</quote>

<p>And Linus Torvalds said:</p>

<quote who="Linus Torvalds">

<p>Indeed. The fact is, we do need a "testing ground" for some experimental
fixes to stuff that needs to be fixed, and that's one of the things the -mm
kernels used to do for 2.5.x.</p>

<p>Since everybody was pretty comfy with that setup, we'll just continue
that way. By the time 2.7.x opens up, things should have calmed down, and
commercial vendors have their support trees in shape etc, but for now the
-mm tree is a testing ground, and I'll make -pre trees that should be fairly
stable, and then we'll do the 2.6.1 etc "real releases" based off them.</p>

</quote>

</section>

<section
  title="Patch Submission Policies"
  subject="[CFT/PATCH] give sound/oss/trident a holiday cleanup for 2.6"
  posts="13"
  startdate="29 Dec 2003 10:38:47 -0800"
  enddate="01 Jan 2004 16:43:59 -0800"
>

<mention>Muli Ben-Yehuda</mention>

<p>Muli Ben-Yehuda posted a patch, and Linus Torvalds said:</p>

<quote who="Linus Torvalds">

<p>When doing things like this, can you split up the patches into two separate
things: one that _only_ does whitespace changes, and that is guaranteed not
to change anything else, and another that does the rest.</p>

<p>It's a total b*tch to try to figure out which change resulted in some
difference, if the changes are intermixed with large whitespace cleanups.</p>

</quote>

<p>Muli replied, <quote who="Muli">You're 100% right. Internally, the
patch I sent is composed of 30 different patches. The reason I didn't
seperate it into two patches is that the changes were interleaved and
inter-dependant and seperating them was a b*tch.</quote> Jeff Garzik said,
<quote who="Jeff Garzik">Thirty separate patches is OK.  We have scripts to
handle "patchbombs".</quote> And Linus said:</p>

<quote who="Linus Torvalds">

<p>Yes and no.</p>

<p>Thirty separate patches make sense if they are independent and really do
conceptually different things. Then it makes sense to have them as separate
checkins, and be able to tell people "ok, try undoing that one, maybe that's
the problem".</p>

<p>However, if they are all just "fix silly bugs in xxx", then I'd much rather
see it as one big patch. Having it split up into "fix bug on line 50" and
"fix bug on line 75" just doesn't make any sense - it only makes the patch
history harder to follow.</p>

<p>So "many small patches" aren't automatically any better than one big one.
The thing that matters is to keep things _conceptually_ separated. If one
patch fixes whitespace, and another one fixes bugs, then that's good.</p>

</quote>

<p>Jeff replied, <quote who="Jeff Garzik">There's certainly a middle ground.
For drivers I generally request that bug fixes for separate bugs be split
up, since inevitably one bug fix out of twenty breaks for somebody on that
somebody's weird hardware.</quote></p>

</section>

<section
  title="BitKeeper Usage Policy And Advice"
  subject="[PATCH] 2.6.0 - Watchdog patches"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=18bSg-70T-3%40gated-at.bofh.it"
  posts="16"
  startdate="29 Dec 2003 11:52:46 -0800"
  enddate="31 Dec 2003 11:13:13 -0800"
>
<topic>Disks: SCSI</topic>
<topic>Version Control</topic>

<mention>Andy Isaacson</mention>
<mention>Wim Van Sebroeck</mention>
<mention>Andrew Morton</mention>

<p>Wim Van Sebroeck wanted Linus Torvalds and Andrew Morton to pull some
changes from his BitKeeper tree, but Linus said:</p>

<quote who="Linus Torvalds">

<p>This tree has 38 deltas, all just merges.</p>

<p>The end result is a horribly messy revision tree, for a few one-liners.</p>

<p>I'm going to take the patch as a patch instead, and hope that you'll
throw your BK tree away.</p>

<p>Please don't follow the release tree in your development trees, it makes
it impossible to see how the revision history happened.</p>

</quote>

<p>Jeff Garzik added:</p>

<quote who="Jeff Garzik">

<p>Agreed.  Several BK developers do this, forgetting that one of things
that makes BK so useful is its merge technology.</p>

<p>I recommend (assuming no patches outstanding),</p>

<p>

<ul>

<li>clone latest tree</li>

<li>do development</li>

<li>only 'bk pull' from latest tree iff (a) you are about to submit to
Linus/Andrew or (b) you know there is a conflicting change in upstream</li>

</ul>

</p>

<p>Pulling the latest, just to be up-to-date, just obfuscates things and
needlessly increases the size of the master ChangeSet file.</p>

</quote>

<p>Paul Jackson said:</p>

<quote who="Paul Jackson">

<p>Another possibility I like is to recreate my changes (what few so far
...) against a clean bk tree, before sending.  Hide all my internal iterations
and changes from others.</p>

<p>I will pull frequently and liberally into the bk clones that I use to
track 2.6, 2.6-mm and whatever else I am based on.  These in turn I pull
into my main working bk tree, along with pulling in the various changes I
have in progress, each from their own bk clone.</p>

<p>Then when it comes time to send out a patch, I:</p>

<p>

<ol>

<li>Generate an old fashioned patch (bk export -tpatch), containing just
the revisions relevant to what I will send.</li>

<li>Clone a fresh bk tree that is closest to whatever the recipient of my
patch would like to work with</li>

<li>Apply the patch to the fresh clone, generating a clean history of one
change for just that patch.</li>

<li>Double check that that builds and boots.</li>

<li>Then send that change out, usually by exporting it as a -second- old
fashioned patch, since for reasons not relevant here, I end up sending patches,
not bk pulls, down stream.</li>

</ol>

</p>

<p>The objective being:</p>

<p>My final "published work" is that patch - it should be as clean as
practical.</p>

<p>By going into and back out of old fashioned patches, I isolate the anal
history that bk kept of all my interim changes from the rest of the world.</p>

</quote>

<p>Elsewhere, Wim explained that his messy BK tree was the result of postponing
those patches until 2.6.0 had come out. Linus replied:</p>

<quote who="Linus Torvalds">

<p>Yeah, I know. It's one of the downsides of having anal revision control,
and BK is more anal than most.</p>

<p>I do end up taking patches that have this syndrome if it looks like the
pain of not taking the messy revision history is larger than the pain of
just fixing it. Sometimes it's hard to avoid.</p>

<p>But most of the time the proper thing to do is to just not merge
unnecessarily - if something is pending for a while, Bk does the merge
correctly anyway, so you can just leave it pending and have me pull from
an old tree (after you have verified in your own tree that the pull will
succeed and do the right thing).</p>

<p>That way it ends up being trivial to see where/when the changes
happened.</p>

</quote>

<p>Matthias Andree asked:</p>

<quote who="Matthias Andree">

<p>Not being very used to BK, does that mean I have several trees around:</p>

<p>

<ol>

<li>the official release tree</li>

<li>an "old tree" with my local change that I'm forwarding</li>

<li>a temporary test tree to see if the merge would succeed, which I'll get
by cloning (1) and then pulling from (2)?</li>

</ol>

</p>

<p>Well, talk about FAAAAAAST drives (10,025/min SCSI kind) unless you have
time to waste on all those BK consistency checks (which are, of course,
what #3 is all about).</p>

<p>Or am I missing some obvious short cut?</p>

</quote>

<p>To the idea of keeping several trees around, Linus replied:</p>

<quote who="Linus Torvalds">

<p>The answer to that question is always a resounding "yes".</p>

<p>BK really thrives on having several trees around. You don't _have_ to
have them, but basically the default rule should be: use separate trees
for everything you can think of that isn't directly dependent on stuff in
another tree.</p>

<p>That does _not_ mean that you should necessarily create "temporary trees".
I actually do that a lot of the time, because I tend to create a totally
new clone when I start applying long series of patches or do anything even
half-way strange: it's just a lot easier to throw failures away, than it is
to try to sort it out later.</p>

<p>But most people probably do _not_ want to have that kind of "temporary tree"
mentality in general. People should realize that it's ok, and in particular
that if you're doing something experimental it's fine to just create a new
tree and later on decide that it was crap and just do a full "rm -rf" on it,
and realize that the only thing you lost was some time.</p>

</quote>

<p>But to Matthias' temporary tree described in item 3 of his list, Linus
also said, <quote who="Linus Torvalds">The tree doesn't really need to be
temporary per se. It can be your "work tree" - the tree where you merge
all the different sources of BK input. I realize that a lot of people only
really have two sources of input (the standard tree and their own development
tree), but if you get that concept early, you'll find it trivial to merge in
other peoples trees into your "work tree", and keep track of many different
development trees at the same time and just let BK do the merging for
you.</quote> And regarding any available short-cuts, Linus said:</p>

<quote who="Linus Torvalds">

<p>Basically, the obvious shortcut is to keep your work-tree around, so you
don't have to clone and re-pull it all the time.</p>

<p>After a while, your work-tree is really messy (especially if you pull
from multiple different development trees), but the point should be that no
actual development gets done there, so you don't care: you can always just
flush it entirely, and re-create it anew.</p>

<p>But you don't have to flush and re-create it _all_ the time. That would just
be wasteful. Although if you have the hardware, it isn't that painful..</p>

</quote>

<p>Elsewhere, Ed Tomlinson asked if it were possible to tell BK to defer
its consistency checks, since they typically took 15 to 20 minutes each
time. Andy Isaacson was surprised by this, saying the checks shouldn't
take more than about 30 seconds, depending on the hardware. Eric D. Mudama
reported 2 to 3 minute consistency checks. Andy turned around and agreed
that perhaps 30 seconds was too optimistic for all machines, and that RAM
size would have a powerful influence on consistency check times. Ed reported
his box as <quote who="Ed Tomlinson">an old K6-III 400 with 512MB with UDMA2
harddrives.</quote></p>

</section>

<section
  title="Status Of BitKeeper Snapshots For 2.6"
  subject="Daily 2.6.x BK snapshots going again"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=18cvb-83n-27%40gated-at.bofh.it"
  posts="1"
  startdate="29 Dec 2003 12:43:27 -0800"
>
<topic>Version Control</topic>

<p>Jeff Garzik said:</p>

<quote who="Jeff Garzik">

<p>Updated my snapshot script for 2.6.0 release, and snapshots are once
again flowing into</p>

<p><a
href="http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/">http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/</a></p>

<p>The snapshots for the 2.6.0-testX series were moved to</p>

<p><a
href="http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/old/">http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/old/</a></p>

</quote>

</section>

<section
  title="USB Updates For 2.6"
  subject="[BK PATCH] USB patches for 2.6.0"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=18edJ-2Ni-13%40gated-at.bofh.it"
  posts="1"
  startdate="29 Dec 2003 14:34:22 -0800"
>
<topic>USB</topic>
<topic>Version Control</topic>

<p>Greg KH said:</p>

<quote who="Greg KH">

<p>Here are some USB patches for 2.6.0.  There are a number of different
fixes and a few new drivers added.  Some of the highlights are:</p>

<p>

<ul>

<li>lots of usb-storage fixes</li>

<li>lots of usb-storage unusual-devs updates</li>

<li>added new w9968cf driver</li>

<li>added new lego tower driver</li>

<li>core tweaks for non-compliant USB devices.</li>

<li>lots of other little fixes</li>

</ul>

</p>

<p>Please pull from:  bk://linuxusb.bkbits.net/usb-devel-2.6</p>

<p>Patches will be posted to linux-usb-devel as a follow-up thread for
those who want to see them.</p>

</quote>

</section>

<section
  title="Experimental Net Driver Updates For 2.6"
  subject="[BK PATCHES] 2.6.x experimental net driver updates"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=GDlj.4hX.15%40gated-at.bofh.it"
  posts="2"
  startdate="29 Dec 2003 21:55:05 -0800"
  enddate="30 Dec 2003 09:41:49 -0800"
>
<topic>Networking</topic>
<topic>Version Control</topic>

<p>Jeff Garzik said:</p>

<quote who="Jeff Garzik">

<p>Summary of new changes:</p>

<p>

<ul>

<li>bonding fixes</li>
<li>e100/e1000 fixes</li>
<li>other fixes</li>
<li>via-rhine netpoll support</li>

</ul>

</p>

<p>Summary of patchkit:</p>

<p>

<ul>

<li>new e100 driver (rewritten from scratch)</li>
<li>new nVidia nForce NIC driver</li>
<li>new pc200syn WAN driver</li>

<li>tg3 bug fixes</li>
<li>r8169 major bug fixes</li>
<li>e1000 minor updates / fixes</li>
<li>sk98lin vendor updates / fixes</li>
<li>misc bug fixes</li>

<li>8139too NAPI support</li>
<li>tulip NAPI support</li>

<li>netconsole / netdump support</li>
<li>net_device allocation and reference counting work</li>

</ul>

</p>

<p>Patch:</p>

<p><a href="http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/2.6.0-bk2-netdrvr-exp1.patch.bz2">http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/2.6.0-bk2-netdrvr-exp1.patch.bz2</a>
(NOTE: _requires_ 2.6.0-bk2 snapshot, or IOW Linus-latest from BK, in
order to apply successfully)</p>

<p>Full changelog:</p>

<p><a href="http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/2.6.0-bk2-netdrvr-exp1.log">http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/2.6.0-bk2-netdrvr-exp1.log</a></p>

<p>BK repo:</p>

<p>bk://gkernel.bkbits.net/net-drivers-2.5-exp</p>

</quote>

</section>

<section
  title="SCSI Updates"
  subject="[BK PATCH] SCSI updates"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=18AQO-4wV-27%40gated-at.bofh.it"
  posts="1"
  startdate="30 Dec 2003 14:08:32 -0800"
>
<topic>Disks: SCSI</topic>

<p>James Bottomley said, <quote who="James Bottomley">This represents the
driver updates and other fairly stable changes that have been floating
around in the SCSI trees for a while.  The only controversial element is
updating the aic7xxx/79xx drivers.  I've been receiving reports that the
1.3.9 version of the aic79xx was non-functional in 2.6, so I updated it to
1.3.11 based on Justin's tree (after confirming with the reporters that this
fixed their problems).</quote></p>

</section>

<section
  title="Prototype For BitKeeper 'Undo Changeset' Improvement"
  subject="[BK] cset -x improvement (prototype)"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=18DOB-19H-11%40gated-at.bofh.it"
  posts="1"
  startdate="30 Dec 2003 17:49:52 -0800"
>
<topic>Version Control</topic>

<p>Larry McVoy said:</p>

<quote who="Larry McVoy">

<p>Some of you use the cset -x feature in BK (which is a way of undoing the
effects of a particular changeset).</p>

<p>The documented behaviour of cset -x is that it only undoes content
changes, not renames, creates, permissions, etc.  This interface is unique
in that respect, all the other interfaces in BK operate on all attributes,
not just contents.</p>

<p>I've prototyped a version of the interface which works on contents,
names, and permissions, and in addition also uses the BK merge tools to
merge any conflicting changes as a result of the undo of the changeset.
This is JUST A PROTOTYPE and has a lot of limitations but I'd like some
feedback on whether this is a good direction and we should productize this
or if this is not helpful to you.</p>

<p>If you use cset -x and want a better version of that interface, drop me
an email and I'll send you the shell script (please make sure to send mail
to me directly, not to the lists, because (a) they don't need to see all the
noise and (b) I'm no longer subscribed to the Linux kernel mailing list).</p>

</quote>

</section>

<section
  title="Status Of kernel.bkbits.net"
  subject="kernel.bkbits.net is up"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=18F44-3dS-25%40gated-at.bofh.it"
  posts="2"
  startdate="30 Dec 2003 19:12:18 -0800"
  enddate="30 Dec 2003 19:20:52 -0800"
>
<topic>Version Control</topic>

<mention>Nigel Cunningham</mention>

<p>Larry McVoy said that kernel.bkbits.net was up, adding, <quote who="Larry
McVoy">If you don't have an account on this and you want one (it's mostly
for BK users but has sort of turned into a public machine for any of the
kernel developers, DaveM describes it as "a friendly place") send me or
davem a ssh2 key and we'll set you up.</quote> Nigel Cunningham asked what
the benefit of an account would be, but there was no reply.</p>

</section>

<section
  title="Linux 2.6.1-rc1 Released; Unanswered Questions About 2.6 Release Policy"
  subject="2.6.1-rc1"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=18Kdj-3SS-9%40gated-at.bofh.it"
  posts="22"
  startdate="31 Dec 2003 00:36:49 -0800"
  enddate="02 Jan 2004 21:54:09 -0800"
>
<topic>Disks: SCSI</topic>
<topic>I2C</topic>
<topic>Kernel Release Announcement</topic>
<topic>USB</topic>

<p>Linus Torvalds announced 2.6.1-rc1, saying:</p>

<quote who="Linus Torvalds">

<p>Ok, I've merged a lot of pending patches into 2.6.1-rc1, and will now
calm down for a while again, to make sure that the final 2.6.1 is ok.</p>

<p>Most of the updates is for stuff that has been in -mm for a long while
and is stable, along with driver updates (SCSI, network, i2c and USB).</p>

</quote>

<p>Mike Fedyk pointed out, <quote who="Mike Fedyk">Well there goes the -pre
series. ;)</quote> And asked, <quote who="Mike Fedyk">Are we going to have
2.6.1-rc1-mm1? :-D</quote>, but there was no reply.</p>

</section>

<section
  title="Linux 2.4.24-pre3 Released"
  subject="Linux 2.4.24-pre3"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=18OAi-2Ve-3%40gated-at.bofh.it"
  posts="4"
  startdate="31 Dec 2003 05:13:57 -0800"
  enddate="31 Dec 2003 10:51:35 -0800"
>
<topic>Disk Arrays: LVM</topic>
<topic>I2C</topic>

<p>Marcelo Tosatti released 2.4.24-pre3, saying, <quote who="Marcelo
Tosatti">It contains a PPC32/SPARC update, some i2c cleanups, LVM update,
network update, a new WAN driver, amongst others.</quote></p>

</section>

<section
  title="udev 012 Released"
  subject="[ANNOUNCE] udev 012 release"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=18X0V-65z-15%40gated-at.bofh.it"
  posts="1"
  startdate="31 Dec 2003 14:07:56 -0800"
>
<topic>FS: devfs</topic>
<topic>FS: sysfs</topic>
<topic>Hot-Plugging</topic>
<topic>Version Control</topic>

<p>Greg KH announced:</p>

<quote who="Greg KH">

<p>I've released the 012 version of udev.  It can be found at:</p>

<p><a
href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-012.tar.gz">kernel.org/pub/linux/utils/kernel/hotplug/udev-012.tar.gz</a></p>

<p>rpms built against Red Hat FC1 are available at:</p>

<p><a
href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-012-1.i386.rpm">kernel.org/pub/linux/utils/kernel/hotplug/udev-012-1.i386.rpm</a></p>

<p>with the source rpm at:</p>

<p><a href="kernel.org/pub/linux/utils/kernel/hotplug/udev-012-1.src.rpm">kernel.org/pub/linux/utils/kernel/hotplug/udev-012-1.src.rpm</a></p>

<p>udev allows users to have a dynamic /dev and provides the ability to
have persistent device names.  It uses sysfs and /sbin/hotplug and runs
entirely in userspace.  It requires a 2.6 kernel with CONFIG_HOTPLUG
enabled to run.  Please see the udev FAQ for any questions about it:</p>

<p><a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ">kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ</a></p>

<p>For any udev vs devfs questions anyone might have, please see:</p>

<p><a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev_vs_devfs">kernel.org/pub/linux/utils/kernel/hotplug/udev_vs_devfs</a></p>

<p>The major changes since the 011 release are:</p>

<p>

<ul>

<li>updated ide devfs compatible script</li>
<li>command line options are now available, allowing you to query
          the udev database.  This is just a first cut, the query
          functionality will be extended later.</li>
<li>lots of minor bug fixes and tweaks.</li>

</ul>

</p>

<p>Thanks again to everyone who has send me patches for this release, a
full list of everyone, and their changes is below.</p>

<p>udev development is done in a BitKeeper repository located at:</p>

<p>        bk://linuxusb.bkbits.net/udev</p>

<p>Daily snapshots of this tree used to be found at:</p>

<p>        http://www.codemonkey.org.uk/projects/bitkeeper/udev/</p>

<p>But that box seems to be down now.  Hopefully it will be restored
someday.  If anyone ever wants a tarball of the current bk tree, just
email me.</p>

</quote>

</section>

<section
  title="Trouble With udev Removable Media Handling"
  subject="removable media revalidation - udev vs. devfs or static /dev"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=19hVI-1ma-19%40gated-at.bofh.it"
  posts="8"
  startdate="01 Jan 2004 12:33:04 -0800"
  enddate="03 Jan 2004 12:51:20 -0800"
>
<topic>FS: devfs</topic>
<topic>Hot-Plugging</topic>

<p>Andrey Borzenkov reported:</p>

<quote who="Andrey Borzenkov">

<p>udev names are created when kernel detects corr. device. Unfortunately for
removable media kernel rescans for partitions only when I try to access
device. Meaning - because kernel does not know partition table it did not
send hotplug event so udev did not create device nodes. But without device
nodes I have no way to access device in Unix :(</p>

<p>specifically I have now my Jaz and I have no (reasonable) way to access
partition 4 assuming device nodes are managed by udev.</p>

<p>devfs solved this problem by</p>

<p>

<ul>

<li>always exporting at least handle to the whole disk (sda as example)</li>
<li>using something simple like dd if=/dev/sda count=1 on lookup for
non-existing partition (/dev/sda4) that would rescan partitions and create
device nodes for them.</li>

</ul>

</p>

<p>static /dev simply has all nodes available and does not suffer from this
problem at all.</p>

<p>unfortunately there are no lookup events in case if udev ... meaning at this
moment user must manually rescan partitions after inserting new media. I do
not see any way to solve this problem at all given current implementation.
The closest is to blindly create nodes for all partitions as soon as block
device is available.</p>

</quote>

<p>Greg KH said, <quote who="Greg KH">Doesn't the kernel always create the
main block device for this device?  If so, udev will catch that. If not,
there's no way udev will work for this kind of device, sorry. You could make
a script that just creates the device node in /tmp, runs dd on it, and then
cleans it all up to force partition scanning.</quote> Andrey agreed that the
kernel did make the main block device /dev/sda, but he didn't see how this was
helpful, since he needed /dev/sda4 specifically. He could write a script to do
what Greg suggested, but he could see no way to cause that script to execute
at the proper time. He said, <quote who="Andrey Borzenkov">There is no event
when you just insert Jaz disk; nor is there any way to trigger revalidation
on access to non-existing device like is the case without udev.</quote> But
Greg pointed out that udev <quote who="Greg KH">does provide that mechanism.
See the CALLOUT rule. It can run any program or script when a new device is
seen by the kernel.</quote></p>

</section>

<section
  title="Fair Scheduling In 2.4"
  subject="Fair scheduling in 2.4 ?"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=19zIX-KI-13%40gated-at.bofh.it"
  posts="2"
  startdate="02 Jan 2004 07:41:14 -0800"
  enddate="02 Jan 2004 09:50:37 -0800"
>

<p>Robert Mena asked:</p>

<quote who="Robert Mena">

<p>Back in the days of kernel 2.2 there was a patch (from Rik van Riel if
I recall) to the kernel so no single user could use all available cpu.</p>

<p>I was wondering if this feature (or something like it) has been ported
or integrated in 2.4.x series ?</p>

</quote>

<p>Rik van Riel replied, <quote who="Rik van Riel">There's
a few versions for 2.4 on my patches page ;) <a
href="http://surriel.com/patches/">http://surriel.com/patches/</a></quote></p>

</section>

</kc>

