<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="146" date="17 Dec 2001 00:00:00 -0800" />

<stats posts="1953" size="7867" contrib="504" multiples="248" lastweek="197">

<person posts="148" size="383" who="Alan Cox " />
<person posts="46" size="189" who="Larry McVoy " />
<person posts="43" size="139" who="Jens Axboe " />
<person posts="42" size="151" who="Daniel Phillips " />
<person posts="36" size="130" who="Davide Libenzi " />
<person posts="33" size="118" who="&quot;Eric S. Raymond&quot; " />
<person posts="29" size="110" who="&quot;H. Peter Anvin&quot; " />
<person posts="29" size="92" who="Andrew Morton " />
<person posts="29" size="84" who="&quot;David S. Miller&quot; " />
<person posts="29" size="79" who="Robert Love " />
<person posts="28" size="84" who="Rik van Riel " />
<person posts="27" size="119" who="Marcelo Tosatti " />
<person posts="26" size="138" who="Stephan von Krawczynski " />
<person posts="26" size="86" who="Pavel Machek " />
<person posts="24" size="96" who="&quot;Martin J. Bligh&quot; " />
<person posts="24" size="89" who="Linus Torvalds " />
<person posts="23" size="73" who="Keith Owens " />
<person posts="22" size="72" who="Alexander Viro " />
<person posts="20" size="65" who="Martin Dalecki " />
<person posts="17" size="55" who="Jeff Garzik " />
<person posts="17" size="53" who="" />
<person posts="16" size="73" who="Rusty Russell " />
<person posts="16" size="56" who="Richard Gooch " />
<person posts="16" size="41" who="Roy Sigurd Karlsbakk " />
<person posts="14" size="76" who="Cory Bell " />
<person posts="14" size="52" who="Hans Reiser " />
<person posts="14" size="44" who="" />
<person posts="12" size="41" who="David Weinehall " />
<person posts="12" size="36" who="Matthias Andree " />
<person posts="12" size="29" who="Dave Jones " />
<person posts="11" size="69" who="Jorge Carminati " />
<person posts="10" size="55" who="bert hubert " />
<person posts="10" size="39" who="Zwane Mwaikambo " />
<person posts="10" size="35" who="Victor Yodaiken " />
<person posts="10" size="34" who=" (Kai Henningsen)" />
<person posts="9" size="78" who="Mike Kravetz " />
<person posts="9" size="77" who="Benjamin LaHaise " />
<person posts="9" size="60" who="Ben Greear " />
<person posts="9" size="42" who="Rob Landley " />
<person posts="9" size="36" who="Ingo Molnar " />
<person posts="9" size="33" who="&quot;Paul G. Allen&quot; " />
<person posts="9" size="30" who="Horst von Brand " />
<person posts="9" size="26" who="Russell King " />
<person posts="9" size="24" who="Oliver Xymoron " />
<person posts="9" size="23" who="&quot;Udo A. Steinberg&quot; " />
<person posts="9" size="22" who="Thomas Hood " />
<person posts="8" size="45" who="&quot;Jeff V. Merkey&quot; " />
<person posts="8" size="42" who="Pete Zaitcev " />
<person posts="8" size="34" who="vda " />
<person posts="8" size="32" who="jamal " />
<person posts="8" size="30" who="Mike Fedyk " />
<person posts="8" size="28" who="David Mosberger " />
<person posts="8" size="27" who=" (Eric W. Biederman)" />
<person posts="8" size="26" who="Tom Rini " />
<person posts="8" size="25" who="Padraig Brady " />
<person posts="8" size="24" who="Christoph Hellwig " />
<person posts="8" size="24" who="Roman Zippel " />
<person posts="7" size="53" who="Ken Brownfield " />
<person posts="7" size="36" who="" />
<person posts="7" size="26" who="Henning Schmiedehausen " />
<person posts="7" size="20" who="Andi Kleen " />
<person posts="7" size="20" who="David Woodhouse " />
<person posts="6" size="29" who="Leigh Orf " />
<person posts="6" size="26" who="&quot;Calin A. Culianu&quot; " />
<person posts="6" size="26" who="Wayne Whitney " />
<person posts="6" size="26" who="Anton Blanchard " />
<person posts="6" size="24" who="&quot;M. Edward Borasky&quot; " />
<person posts="6" size="24" who="=?iso-8859-1?Q?Ragnar_Kj=F8rstad?= " />
<person posts="6" size="24" who="Ivan Kokshaysky " />
<person posts="6" size="24" who="Andrea Arcangeli " />
<person posts="6" size="22" who="=?ISO-8859-1?Q?Ra=FAl?= =?ISO-8859-1?Q?N=FA=F1ez?= de Arenas" />
<person posts="6" size="21" who="Miles Lane " />
<person posts="6" size="20" who="&quot;H . J . Lu&quot; " />
<person posts="6" size="17" who="&quot;Richard B. Johnson&quot; " />
<person posts="5" size="129" who=" (Christian Koenig)" />
<person posts="5" size="37" who="Bongani Hlope " />
<person posts="5" size="31" who="Doug Ledford " />
<person posts="5" size="26" who="Kurt Garloff " />
<person posts="5" size="25" who="&quot;Grover, Andrew&quot; " />
<person posts="5" size="25" who="&quot;David C. Hansen&quot; " />
<person posts="5" size="25" who="&quot;Adam J. Richter&quot; " />
<person posts="5" size="24" who="Andris Pavenis " />
<person posts="5" size="23" who="David Lang " />
<person posts="5" size="21" who="John Clemens " />
<person posts="5" size="21" who="Dipankar Sarma " />
<person posts="5" size="20" who=" (Linus Torvalds)" />
<person posts="5" size="19" who="GOTO Masanori " />
<person posts="5" size="18" who="Andre Hedrick " />
<person posts="5" size="17" who="William Lee Irwin III " />
<person posts="5" size="16" who="Tim Hockin " />
<person posts="5" size="16" who="&quot;Albert D. Cahalan&quot; " />
<person posts="4" size="102" who="John Huttley " />
<person posts="4" size="71" who="Jerrad Pierce " />
<person posts="4" size="56" who="skidley " />
<person posts="4" size="34" who="Ravikiran G Thirumalai " />
<person posts="4" size="30" who="Adrian Bunk " />
<person posts="4" size="27" who="Eyal Lebedinsky " />
<person posts="4" size="24" who="Craig Christophel " />
<person posts="4" size="19" who="" />
<person posts="4" size="18" who="&quot;Randy.Dunlap&quot; " />
<person posts="4" size="18" who="Pierre Rousselet " />
<person posts="4" size="16" who="Edward Muller " />
<person posts="4" size="16" who="Tachino Nobuhiro " />
<person posts="4" size="15" who="Paul Sargent " />
<person posts="4" size="15" who="Christian Laursen " />
<person posts="4" size="14" who="Kiril Vidimce " />
<person posts="4" size="14" who="Jason Baietto " />
<person posts="4" size="13" who="=?iso-8859-2?Q?Mateusz_=A3oskot?= " />
<person posts="4" size="13" who="=?ISO-8859-1?Q?G=E9rard_Roudier?= " />
<person posts="4" size="13" who="&quot;Niels Christiansen&quot; " />
<person posts="4" size="13" who="Samium Gromoff " />
<person posts="4" size="13" who="Gregoire Favre " />
<person posts="4" size="12" who="Ivanovich " />
<person posts="4" size="12" who="Horst von Brand " />
<person posts="4" size="11" who="Arjan van de Ven " />
<person posts="4" size="11" who="Stevie O " />
<person posts="4" size="11" who="Ishan Oshadi Jayawardena " />
<person posts="4" size="10" who="&quot;James Stevenson&quot; " />
<person posts="4" size="10" who="Mike Galbraith " />
<person posts="4" size="10" who="Chris Wright " />
<person posts="4" size="10" who="" />
<person posts="4" size="10" who="&quot;victor1 torres&quot; " />
<person posts="3" size="47" who="Rene Engelhard " />
<person posts="3" size="32" who=" (Mail Delivery System)" />
<person posts="3" size="27" who="Falk Stern " />
<person posts="3" size="24" who=" (Barry K. Nathan)" />
<person posts="3" size="22" who="Kai Germaschewski " />
<person posts="3" size="16" who="Zlatko Calusic " />
<person posts="3" size="16" who="Stanislav Meduna " />
<person posts="3" size="15" who="Daniel Freedman " />
<person posts="3" size="14" who="Stephen Satchell " />
<person posts="3" size="14" who="Jack Steiner " />
<person posts="3" size="14" who="Jonathan Stanford " />
<person posts="3" size="13" who="Abraham vd Merwe " />
<person posts="3" size="13" who="Erik Andersen " />
<person posts="3" size="12" who="Rene Rebe " />
<person posts="3" size="12" who="Pablo Borges " />
<person posts="3" size="12" who="" />
<person posts="3" size="12" who="&quot;Tyler BIRD&quot; " />
<person posts="3" size="11" who="Anton Altaparmakov " />
<person posts="3" size="11" who="Paul Jackson " />
<person posts="3" size="11" who="&quot;James Stevenson&quot; " />
<person posts="3" size="10" who="&quot;Henning P. Schmiedehausen&quot; " />
<person posts="3" size="10" who="Michael Poole " />
<person posts="3" size="10" who="Andris Pavenis " />
<person posts="3" size="9" who="Giacomo Catenazzi " />
<person posts="3" size="9" who="Daniel Gryniewicz " />
<person posts="3" size="9" who="James Davies " />
<person posts="3" size="9" who="Trond Myklebust " />
<person posts="3" size="9" who="Mike Castle " />
<person posts="3" size="9" who="John Stoffel " />
<person posts="3" size="9" who="Manfred Spraul " />
<person posts="3" size="9" who="" />
<person posts="3" size="8" who="Chris Friesen " />
<person posts="3" size="8" who="Bill Davidsen " />
<person posts="3" size="8" who="Tom Vier " />
<person posts="3" size="8" who="Jan Kara " />
<person posts="3" size="8" who="J Sloan " />
<person posts="3" size="8" who="Stefan Smietanowski " />
<person posts="3" size="8" who="=?iso-8859-1?Q?Jos=E9_Luis_Domingo_L=F3pez?= " />
<person posts="3" size="8" who="Jeff Gustafson " />
<person posts="3" size="7" who="Nicolas Vollmar " />
<person posts="3" size="7" who="Marvin Justice " />
<person posts="3" size="7" who="&quot;[MOc]cda*mirabilos&quot; " />
<person posts="3" size="7" who="William Park " />
<person posts="3" size="7" who="Lars Brinkhoff " />
<person posts="3" size="7" who="Jacek =?iso-8859-2?Q?Pop=B3awski?= " />
<person posts="3" size="6" who="Dan Hollis " />
<person posts="3" size="6" who="Frank Cornelis " />
<person posts="2" size="43" who="Thomas Braun " />
<person posts="2" size="23" who="Anton Altaparmakov " />
<person posts="2" size="18" who="&quot;S. Parker&quot; " />
<person posts="2" size="18" who="Berend De Schouwer " />
<person posts="2" size="14" who="&quot;Martin Eriksson&quot; " />
<person posts="2" size="13" who="&quot;cardente, john&quot; " />
<person posts="2" size="12" who="Mathieu Legrand " />
<person posts="2" size="12" who="Florian Lohoff " />
<person posts="2" size="11" who="Joy Almacen " />
<person posts="2" size="10" who="Miguel Maria Godinho de Matos " />
<person posts="2" size="10" who="&quot;Pantelis Proios&quot; " />
<person posts="2" size="9" who="&quot;PANTELIS PROIOS&quot; " />
<person posts="2" size="9" who="Steve Lord " />
<person posts="2" size="9" who="&quot;Trever L. Adams&quot; " />
<person posts="2" size="8" who="Arun Bhalla " />
<person posts="2" size="8" who="&quot;Roeland Th. Jansen&quot; " />
<person posts="2" size="8" who="Keith Warno " />
<person posts="2" size="7" who="&quot;Jeff Merkey&quot; " />
<person posts="2" size="7" who="Cameron Simpson " />
<person posts="2" size="7" who="&quot;Christopher Friesen&quot; " />
<person posts="2" size="7" who="Pavel Roskin " />
<person posts="2" size="7" who="James Cleverdon " />
<person posts="2" size="7" who="Donald Becker " />
<person posts="2" size="7" who="Dave Carrigan " />
<person posts="2" size="7" who="Marco Colombo " />
<person posts="2" size="7" who="John Alvord " />
<person posts="2" size="6" who="pHilipp Zabel " />
<person posts="2" size="6" who="" />
<person posts="2" size="6" who="Chen Shiyuan " />
<person posts="2" size="6" who="Ben Collins " />
<person posts="2" size="6" who="Jurriaan on Alpha " />
<person posts="2" size="6" who="&quot;Stephen C. Tweedie&quot; " />
<person posts="2" size="6" who="Neil Brown " />
<person posts="2" size="6" who="Ragnar Hojland Espinosa " />
<person posts="2" size="6" who="Petko Manolov " />
<person posts="2" size="6" who="Jeff Dike " />
<person posts="2" size="6" who="Stelian Pop " />
<person posts="2" size="6" who="Nicolas Aspert " />
<person posts="2" size="6" who="Ethan " />
<person posts="2" size="6" who="&quot;Petr Vandrovec&quot; " />
<person posts="2" size="6" who="&quot;Peter T. Breuer&quot; " />
<person posts="2" size="6" who="Dmitri Kassatkine " />
<person posts="2" size="6" who="antirez " />
<person posts="2" size="6" who="&quot;Wilson&quot; " />
<person posts="2" size="6" who="Matt " />
<person posts="2" size="6" who="Ido Diamant " />
<person posts="2" size="6" who="Gordon Oliver " />
<person posts="2" size="6" who="Brian " />
<person posts="2" size="6" who="Matt " />
<person posts="2" size="6" who="&quot;Mohammad A. Haque&quot; " />
<person posts="2" size="5" who="Simon Byrnand " />
<person posts="2" size="5" who="Nathan Bryant " />
<person posts="2" size="5" who="war " />
<person posts="2" size="5" who="Dana Lacoste " />
<person posts="2" size="5" who="" />
<person posts="2" size="5" who="Zilvinas Valinskas " />
<person posts="2" size="5" who="Ian Molton " />
<person posts="2" size="5" who="=?iso-8859-1?Q?Thomas_Lang=E5s?= " />
<person posts="2" size="5" who="&quot;Sascha Andres&quot; " />
<person posts="2" size="5" who="Paul Larson " />
<person posts="2" size="5" who=" (Greg Hennessy)" />
<person posts="2" size="5" who="Alex Bligh - linux-kernel " />
<person posts="2" size="5" who="Elliot Lee " />
<person posts="2" size="5" who="Chris Wedgwood " />
<person posts="2" size="5" who="&quot;Martin A. Brooks&quot; " />
<person posts="2" size="5" who="Urban Widmark " />
<person posts="2" size="5" who="&quot;rohit prasad&quot; " />
<person posts="2" size="5" who="" />
<person posts="2" size="5" who="Sinisa Milivojevic " />
<person posts="2" size="4" who="safemode " />
<person posts="2" size="4" who="&quot;Dan Maas&quot; " />
<person posts="2" size="4" who="Jamie Lokier " />
<person posts="2" size="4" who="Benjamin Herrenschmidt " />
<person posts="2" size="4" who="Pozsar Balazs " />
<person posts="2" size="4" who="Kirk Reiser " />
<person posts="2" size="4" who="Greg KH " />
<person posts="2" size="4" who="Bernd Eckenfels " />
<person posts="2" size="4" who="" />
<person posts="2" size="4" who="Louis Garcia " />
<person posts="1" size="35" who="" />
<person posts="1" size="35" who="&quot;Jaswinder Singh&quot; " />
<person posts="1" size="30" who="Sebastian =?ISO-8859-1?Q?Dr=F6ge?= " />
<person posts="1" size="27" who="Jonathan Isom " />
<person posts="1" size="25" who="Faisal Malallah " />
<person posts="1" size="24" who="" />
<person posts="1" size="14" who="root " />
<person posts="1" size="13" who="Jean Tourrilhes " />
<person posts="1" size="13" who="GNUOrder " />
<person posts="1" size="13" who="Jens =?iso-8859-1?q?Kr=FCger?= " />
<person posts="1" size="11" who="Rich Baum " />
<person posts="1" size="11" who=" (Mail Delivery System)" />
<person posts="1" size="11" who="Dumitru Ciobarcianu " />
<person posts="1" size="10" who="" />
<person posts="1" size="9" who="&quot;Rob Fulton&quot; " />
<person posts="1" size="8" who="Hartmut Holz " />
<person posts="1" size="8" who="Alex Riesen " />
<person posts="1" size="8" who="Sakari Ailus " />
<person posts="1" size="8" who="Rasmus Andersen " />
<person posts="1" size="7" who="root " />
<person posts="1" size="7" who="Matthieu PATOU " />
<person posts="1" size="7" who="Bjorn Helgaas " />
<person posts="1" size="7" who="Burton W " />
<person posts="1" size="7" who="Frank Davis " />
<person posts="1" size="7" who="Adam C Powell IV " />
<person posts="1" size="6" who="&quot;Tyler BIRD&quot; " />
<person posts="1" size="6" who=" (Nathan Walp)" />
<person posts="1" size="6" who="SodaPop " />
<person posts="1" size="6" who="Karim Yaghmour " />
<person posts="1" size="6" who="Nicholas Harring " />
<person posts="1" size="6" who="David Wambolt " />
<person posts="1" size="5" who="Brian Gerst " />
<person posts="1" size="5" who="root " />
<person posts="1" size="5" who="Tech Info " />
<person posts="1" size="5" who="&quot;Nestor Florez&quot; " />
<person posts="1" size="5" who="" />
<person posts="1" size="5" who="Maciek Nowacki " />
<person posts="1" size="5" who="James Bottomley " />
<person posts="1" size="5" who="Mikael Pettersson " />
<person posts="1" size="5" who="Jason Baietto " />
<person posts="1" size="5" who="Stas Sergeev " />
<person posts="1" size="5" who="Petr Bavorovsky " />
<person posts="1" size="5" who="Jay Estabrook " />
<person posts="1" size="5" who="Daniel School " />
<person posts="1" size="5" who="Bas Vermeulen " />
<person posts="1" size="5" who="&quot;aaronhsieh&quot; " />
<person posts="1" size="5" who="Pavel Machek " />
<person posts="1" size="5" who="Thomas Bader " />
<person posts="1" size="4" who="Admin " />
<person posts="1" size="4" who="Takashi Iwai " />
<person posts="1" size="4" who="Helge Hafting " />
<person posts="1" size="4" who="&quot;BALBIR SINGH&quot; " />
<person posts="1" size="4" who="Paul P Komkoff Jr " />
<person posts="1" size="4" who="Gerrit Huizenga " />
<person posts="1" size="4" who="Tobias Vancura " />
<person posts="1" size="4" who="Christoph Rohland " />
<person posts="1" size="4" who="Yusuf Goolamabbas " />
<person posts="1" size="4" who="Andrew Ebling " />
<person posts="1" size="4" who="Alexander Zarochentcev " />
<person posts="1" size="4" who="Martin Josefsson " />
<person posts="1" size="4" who="Hirokazu Nomoto " />
<person posts="1" size="4" who="&quot;Jeffrey H. Ingber&quot; " />
<person posts="1" size="4" who="Axel Kittenberger " />
<person posts="1" size="4" who="&quot;war war&quot; " />
<person posts="1" size="4" who="Steffen Evers " />
<person posts="1" size="4" who="Miika Pekkarinen " />
<person posts="1" size="4" who="Diego SANTA CRUZ " />
<person posts="1" size="4" who="Alex Buell " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="" />
<person posts="1" size="3" who="Alessandro Amici " />
<person posts="1" size="3" who="Yoann Vandoorselaere " />
<person posts="1" size="3" who="Tommy Reynolds " />
<person posts="1" size="3" who="&quot;Vladimir V. Saveliev&quot; " />
<person posts="1" size="3" who="Niteshadow " />
<person posts="1" size="3" who="James Moss " />
<person posts="1" size="3" who="Jesse Barnes " />
<person posts="1" size="3" who="&quot;Matthew G. Marsh&quot; " />
<person posts="1" size="3" who="Nathan Straz " />
<person posts="1" size="3" who="&quot;Adam McKenna&quot; " />
<person posts="1" size="3" who="wolvie_cobain " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="george anzinger " />
<person posts="1" size="3" who="Juan Piernas Canovas " />
<person posts="1" size="3" who="Juergen Sawinski " />
<person posts="1" size="3" who="Hugh Dickins " />
<person posts="1" size="3" who="David Fries " />
<person posts="1" size="3" who="Reid Hekman " />
<person posts="1" size="3" who="Heinz Diehl " />
<person posts="1" size="3" who="Dave Cinege " />
<person posts="1" size="3" who="Gerald Britton " />
<person posts="1" size="3" who="&quot;jeff millar&quot; " />
<person posts="1" size="3" who="&quot;Galappatti, Kishantha&quot; " />
<person posts="1" size="3" who="Erik Mouw " />
<person posts="1" size="3" who="Russell Coker " />
<person posts="1" size="3" who="Jakob Kemi " />
<person posts="1" size="3" who="Matthew Fredrickson " />
<person posts="1" size="3" who="Sebastian Roth " />
<person posts="1" size="3" who="Andreas Schwab " />
<person posts="1" size="3" who="Todor Todorov " />
<person posts="1" size="3" who="&quot;Stanislav Meduna&quot; " />
<person posts="1" size="3" who="Alex Hudson " />
<person posts="1" size="3" who="Patrick Mochel " />
<person posts="1" size="3" who="Paul Dickson " />
<person posts="1" size="3" who="Brian Ristuccia " />
<person posts="1" size="3" who="Khyron " />
<person posts="1" size="3" who="Eric Lammerts " />
<person posts="1" size="3" who="&quot;Lanfranco Salinari&quot; " />
<person posts="1" size="3" who="James Cassidy " />
<person posts="1" size="3" who="Anders Peter Fugmann " />
<person posts="1" size="3" who="Jan Harkes " />
<person posts="1" size="3" who="Tracy R Reed " />
<person posts="1" size="3" who="Greg Banks " />
<person posts="1" size="3" who="Adam Keys " />
<person posts="1" size="3" who="&quot;Radivoje Todorovic&quot; " />
<person posts="1" size="3" who=" (Ton Hospel)" />
<person posts="1" size="3" who="=?iso-8859-1?Q?Jakob_=D8stergaard?= " />
<person posts="1" size="3" who="Marc Haber " />
<person posts="1" size="3" who="Todd Underwood " />
<person posts="1" size="3" who="Michael Zhu " />
<person posts="1" size="3" who="Bob Poortinga " />
<person posts="1" size="3" who="Robert Varga " />
<person posts="1" size="3" who="john slee " />
<person posts="1" size="3" who="&quot;Trevor Smith&quot; " />
<person posts="1" size="3" who="Robin Walser " />
<person posts="1" size="3" who="Andreas Dilger " />
<person posts="1" size="3" who="=?ISO-8859-15?Q?Fran=E7ois?= Cami " />
<person posts="1" size="3" who="Richard Hoechenberger " />
<person posts="1" size="3" who="Andrzej Krzysztofowicz " />
<person posts="1" size="3" who="Berkley Shands " />
<person posts="1" size="3" who="Richard Todd " />
<person posts="1" size="3" who="Karim Lakhani " />
<person posts="1" size="3" who="Michael Elizabeth Chastain " />
<person posts="1" size="3" who="Steve Bergman " />
<person posts="1" size="3" who="&quot;=?iso-8859-1?q?Quim=20K.=20Holland?=&quot; " />
<person posts="1" size="3" who="Roger Larsson " />
<person posts="1" size="3" who="&quot;Justin Hibbits " />
<person posts="1" size="3" who="Momchil Velikov " />
<person posts="1" size="3" who="Keith Owens " />
<person posts="1" size="3" who="&quot;R Sreelatha&quot; " />
<person posts="1" size="3" who="Greg Hennessy " />
<person posts="1" size="3" who="Borsenkow Andrej " />
<person posts="1" size="3" who="&quot;Mark Frazer&quot; " />
<person posts="1" size="3" who="Eli Carter " />
<person posts="1" size="3" who="Bernhard Rosenkraenzer " />
<person posts="1" size="3" who="John Kodis " />
<person posts="1" size="2" who="Christer Weinigel " />
<person posts="1" size="2" who="&quot;Chris Shutters&quot; " />
<person posts="1" size="2" who="=?iso-8859-1?Q?Ragnar_Kj=F8rstad?= " />
<person posts="1" size="2" who="Andre Hedrick " />
<person posts="1" size="2" who="Ingo Oeser " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="&quot;John H. Robinson, IV&quot; " />
<person posts="1" size="2" who="Ben Carrell " />
<person posts="1" size="2" who="Jan Dvorak " />
<person posts="1" size="2" who="Daniel Kobras " />
<person posts="1" size="2" who="Michael Menegakis " />
<person posts="1" size="2" who="Todd Inglett " />
<person posts="1" size="2" who="Nathan Myers " />
<person posts="1" size="2" who="Petri Kaukasoina " />
<person posts="1" size="2" who="Vojtech Pavlik " />
<person posts="1" size="2" who="=?iso-8859-1?q?szonyi=20calin?= " />
<person posts="1" size="2" who="&quot;Amir Noam&quot; " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="salinarl " />
<person posts="1" size="2" who="John Cowan " />
<person posts="1" size="2" who="&quot;Scott Murray&quot; " />
<person posts="1" size="2" who="Tim Hockin " />
<person posts="1" size="2" who="DevilKin " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="=?iso-8859-1?Q?Andr=E9?= Dahlqvist " />
<person posts="1" size="2" who="Stephen Cameron " />
<person posts="1" size="2" who="YH " />
<person posts="1" size="2" who="A Duston " />
<person posts="1" size="2" who="Jeremy Fitzhardinge " />
<person posts="1" size="2" who="&quot;DICKENS,CARY (HP-Loveland,ex2)&quot; " />
<person posts="1" size="2" who="&quot;Simon Turvey&quot; " />
<person posts="1" size="2" who="Dan Kegel " />
<person posts="1" size="2" who="Kristian Peters " />
<person posts="1" size="2" who="Stefan Reinauer " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="&quot;Alex Riesen&quot; " />
<person posts="1" size="2" who="&quot;Jon&quot; " />
<person posts="1" size="2" who="Carl Scarfoglio " />
<person posts="1" size="2" who="&quot;Rick A. Hohensee&quot; " />
<person posts="1" size="2" who="Chris Ricker " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Roel Teuwen " />
<person posts="1" size="2" who="&quot;Lee Packham&quot; " />
<person posts="1" size="2" who="Todd Harrington " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="David Odin " />
<person posts="1" size="2" who="&quot;David L. Parsley&quot; " />
<person posts="1" size="2" who="Bruce Harada " />
<person posts="1" size="2" who="Malcolm Mallardi " />
<person posts="1" size="2" who="Luca Montecchiani " />
<person posts="1" size="2" who="Jacob Luna Lundberg " />
<person posts="1" size="2" who="Neale Banks " />
<person posts="1" size="2" who="&quot;Manfred Spraul&quot; " />
<person posts="1" size="2" who="Aaron Sethman " />
<person posts="1" size="2" who="&quot;Peter Waltenberg&quot; " />
<person posts="1" size="2" who="John Cowan " />
<person posts="1" size="2" who="&quot;M. Edward (Ed) Borasky&quot; " />
<person posts="1" size="2" who="Blue Lang " />
<person posts="1" size="2" who="German Gomez Garcia " />
<person posts="1" size="2" who=" (Eran Man)" />
<person posts="1" size="2" who="Daniel Bergman " />
<person posts="1" size="2" who="Nigel Gamble " />
<person posts="1" size="2" who="Samuel Ortiz " />
<person posts="1" size="2" who="mulix " />
<person posts="1" size="2" who="Chris Mason " />
<person posts="1" size="2" who="&quot;blesson paul&quot; " />
<person posts="1" size="2" who="James Simmons " />
<person posts="1" size="2" who="&quot;Maciej W. Rozycki&quot; " />
<person posts="1" size="2" who="Jan-Marek Glogowski " />
<person posts="1" size="2" who="Britt Park " />
<person posts="1" size="2" who="Samuel Maftoul " />
<person posts="1" size="2" who="Abhishek Rai " />
<person posts="1" size="2" who="Stan Benoit " />
<person posts="1" size="2" who="Matti Aarnio " />
<person posts="1" size="2" who="Pallai Roland " />
<person posts="1" size="2" who="&quot;Marcelo Borges Ribeiro&quot; " />
<person posts="1" size="2" who="&quot;Rechenberg, Andrew&quot; " />
<person posts="1" size="2" who="Lionel Bouton " />
<person posts="1" size="2" who="&quot;Jan H. Schrewe&quot; " />
<person posts="1" size="2" who="Hans-Georg Fischer " />
<person posts="1" size="2" who="Ricardo Galli " />
<person posts="1" size="2" who="Alp ATICI " />
<person posts="1" size="2" who="&quot;Troels Walsted Hansen&quot; " />
<person posts="1" size="2" who="&quot;Jim Fleming&quot; " />
<person posts="1" size="2" who="Christoph Hellwig " />
<person posts="1" size="2" who="&quot;Sarita  N&quot; " />
<person posts="1" size="2" who="&quot;Aaron Tiensivu&quot; " />
<person posts="1" size="2" who="&quot;Buddy Lumpkin&quot; " />
<person posts="1" size="2" who="Anthony DeRobertis " />
<person posts="1" size="2" who="Chmouel Boudjnah " />
<person posts="1" size="2" who="Frank van Maarseveen " />
<person posts="1" size="2" who="Fridtjof Busse " />
<person posts="1" size="2" who="Petr Titera " />
<person posts="1" size="2" who="&quot;Adam McKenna&quot; " />
<person posts="1" size="2" who="Anders Eriksson " />
<person posts="1" size="2" who="Francois Romieu " />
<person posts="1" size="2" who="&quot;Eshwar D - CTD, Chennai.&quot; " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Joerg Pommnitz " />
<person posts="1" size="2" who="Willy Tarreau " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Martin Devera " />
<person posts="1" size="2" who="Hal Duston " />
<person posts="1" size="2" who="Michael Renner " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="&quot;Michael&quot; " />
<person posts="1" size="1" who="Andy Ward " />
<person posts="1" size="1" who="Carlos Carvalho " />

</stats>

<section
  title="Coding Style; Development Philosophy"
  subject="Coding style - a non-issue"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0111.3/1343.html"
  posts="383"
  startdate="28 Nov 2001 15:29:26 -0800"
  enddate="10 Dec 2001 07:59:38 -0800"
>
<topic>BSD</topic>
<topic>Clustering</topic>
<topic>FS: NTFS</topic>
<topic>Microsoft</topic>
<topic>Networking</topic>
<topic>PCI</topic>
<topic>SMP</topic>
<topic>Virtual Memory</topic>

<mention>Stanislav Meduna</mention>
<mention>Donald Becker</mention>
<mention>Chris Ricker</mention>

<p>Peter Waltenberg suggested using the 'indent' program to clean up the coding
styles folks have been complaining about recently. Several folks pointed him to
'Lindent', which is distributed with the kernel sources; and Alexander Viro also
said:</p>

<quote who="Alexander Viro">

<p>indent does _not_ solve the problem of:</p>

<p>

<ul>

<li>buggers who think that MyVariableIsBiggerThanYourVariable is a good
name</li>

<li>buggers who define a function with 42 arguments and body being return
(foo == bar) ? TRUE : FALSE;</li>

<li>buggers who add 1001st broken implementation of memcmp(), call it
FooTurdCompare and prepend it with 20x80 block comment.</li>

<li>buggers who use typedefs like WORD, DWORD, BYTE, IMANIDIOTSHOOTME and
other crap from the same source (OK, they don't write the last one explicitly
- not that it wasn't obvious from the rest of their, ahem, code).</li>

<li>buggers who use Hungarian notation for no good reason and come up with
structure fields that sound like street names from R'Lyeh</li>

<li>buggers who introduce wrappers for standard kernel stuff - like, say it,
typedef int Int32; and sprinkle their crap with per-architecture ifdefs.</li>

<li>buggers who think that cpp is Just The Thing and produce turds that
would make srb cringe in disgust.</li>

</ul>

</p>

</quote>

<p>He added that he was <quote who="Alexander Viro">close to setting up a
Linux Kernel Hall of Shame - one with names of wankers (both individual and
coprorat ones) responsible, their code and commentary on said code...</quote>
Larry McVoy (tongue hanging out) replied, <quote who="Larry McVoy">Please,
please, please, I'm begging you, please do this.  It's the only way people
learn quickly.  Being nice is great, but nothing works faster than a cold
shower of public humiliation :-)</quote> Henning P. Schmiedehausen replied:</p>

<quote who="Henning P. Schmiedehausen">

<p>Cool. I can really see it. "foo inc." releases a GPL driver for Linux and
gets publically humiliated in the "linux source code hall of shame". Perfect. I
can hear the laughter from Redmond over here (and it is 12000km away).</p>

<p>Press release:</p>

<p>"If you support Linux, you may get flamed and humiliated in public for
doing so. Don't do it."</p>

<p>Grow up. There is more to life than coding style that is not "Al Viro
compatible (TM)".</p>

<p>Sigh, sometimes, sometimes, I _really_ understand the BSD folks when
they call the Linux community "a bunch of unkempt nerds that need to get a
life". If they only would use sane init scripts. ;-)</p>

</quote>

<p>Larry said, <quote who="Larry McVoy">Perhaps it would be illuminating to
know that I was BSD hacker, and that I learned the value of this particular
technique from Sun's kernel group, who once upon a time were the best BSD
group on the planet.  It might also be illuminating to consider that this
technique of getting people to listen is still in use at Sun to this day.
Perhaps Sun's professionalism is not what you'd like to see here.</quote>
To which Henning said, <quote who="Henning P. Schmiedehausen">It might
be enlightening to you that a closed users group of SUN coders is not
compareable to a worldwide distributed environment of thousands of people
and companies.</quote> He added:</p>

<quote who="Henning P. Schmiedehausen">

<p>You tell me, that SUN treated _CUSTOMERS_ and companies that wanted to
support SunOS 4.1.x like that? If yes, then I definitely know why they went
SysV. Surely noone wanted BSD any longer.</p>

<p>I would consider the internal development groups in SUN that treated each
other like this also "in need of a change". :-)</p>

</quote>

<p>But Jeff Garzik agreed with Larry, saying, <quote who="Jeff Garzik">The
security community has shown us time and again that public shaming is often
the only way to motivate vendors into fixing security problems.  Yes, even
BSD security guys do this :)</quote> He said he'd like to see a "Top 10
Ugliest Linux Kernel Drivers" list. But Henning objected:</p>

<quote who="Henning P. Schmiedehausen">

<p>A security issue is an universal accepted problem that most of the time
has a reason and a solution.</p>

<p>Coding style, however, is a very personal thing that start with "shall
we use TABs or not? (Jakarta: No. Linux: Yes ...) and goes on to "Is a
preprocessor macro a good thing or not" until variable names (Al Viro:
Names with more than five letters suck. :-) Java: Non-selfdescriptive names
suck. Microsoft: Non-hungarian names suck) and so on.</p>

<p>And you really want to judge code just because someone likes to wrap code
in preprocessor macros or use UPPERCASE variable names?</p>

<p>Come on. That's a _fundamental_ different issue than dipping vendors
in their own shit if they messed up and their box/program has a security
issue. Code that you consider ugly as hell may be seen as "easily
understandable and maintainable" by the author. If it works and has no
bugs, so what? Just because it is hard for you and me to understand (cf.
"mindboggling unwind routines in the NTFS" (I thing Jeff Merkey stated it
like this). It still seems to work quite well.</p>

<p>Are you willing to judge "ugliness" of kernel drivers? What is ugly? Are
Donald Beckers' drivers ugly just because they use (at least on 2.2) their
own pci helper library? Is the aic7xxx driver ugly because it needs libdb
? Or is ugly defined as "Larry and Al don't like them"? :-)</p>

<p>Flaming about coding style is about as pointless as flaming someone
because he supports another sports team. There is no universal accepted
coding style. Not even in C.</p>

</quote>

<p>Alan Cox replied:</p>

<quote who="Alan Cox">

<p>The kernel has an accepted coding style, both the documented and the
tradition part of it. Using that makes life a lot lot easier for maintaining
the code. Enforcing it there is a good idea, except for special cases
(headers shared with NT has been one example of that).</p>

<p>There are also some nice tools around that will do the first stage import
of a Hungarian NT'ese driver and linuxise it.</p>

</quote>

<p>Jeff added, close by, that <quote who="Jeff Garzik">Diverse coding styles
in the Linux kernel create long term maintenance problems.</quote> Also close
by, Alexander said:</p>

<quote who="Alexander Viro">

<p>Fact of life: we all suck at reviewing our own code.  You, me, Ken
Thompson, anybody - we tend to overlook bugs in the code we'd written.
Depending on the skill we can compensate - there are technics for that,
but it doesn't change the fact that review by clued people who didn't write
the thing tends to show bugs we'd missed for years.</p>

<p>If you really don't know that by your own experience - you don't _have_
experience.  There is a damn good reason for uniform style within a project:
peer review helps.  I've lost the count of bugs in the drivers that I'd found
just grepping the tree.  Even on that level review catches tons of bugs.
And I have no reason to doubt that authors of respective drivers would fix
them as soon as they'd see said bugs.</p>

<p>"It's my code and I don't care if nobody else can read it" is an immediate
firing offense in any sane place.  It may be OK in academentia, but in the
real life it's simply unacceptable.</p>

<p>It's all nice and dandy to shed tears for poor, abused, well-meaning
company that had made everyone happy by correct but unreadable code and now
gets humiliated by mean ingrates.  Nice image, but in reality the picture is
quite different.  Code _is_ buggy.  That much is a given, regardless of the
origin of that code.  The only question is how soon are these bugs fixed.
And that directly depends on the amount of efforts required to read through
that code.</p>

</quote>

<p>The discussion went on and on, and then took a dramatic turn when Larry
quipped, <quote who="Larry McVoy">If you think that Linux is at the same level
as Sun's OS or ever will be, you're kidding yourself.  Linux is really cool,
I love it, and I use it every day.  But it's not comparable to Solaris,
sorry, not even close.  I'm not exactly known for my love of Solaris, you
know, in fact I really dislike it.  But I respect it, it can take a licking
and keep on ticking.  Linux isn't there yet and unless the development model
changes somewhat, I'll stand behind my belief that it is unlikely to ever
get there.</quote></p>

<p>Several folks wanted to hear why Larry felt Linux would never touch Sun,
and Larry said that the open source development model was not as good as the
closed, proprietary model. Large groups of volunteer contributors, he felt,
were not able to compete with small groups of paid professionals.</p>

<p>He also added that the best thing to do would be to split kernel development
into the single-processor and multi-processor versions, because simplifying the
technical problems would be the only way for the less qualified volunteers to
have a shot at competing with the proprietary team.</p>

<p>In the course of a long, surprisingly flame-free technical discussion in
response to that, David S. Miller said at one point:</p>

<quote who="David S. Miller">

<p>Coming from the background of having threaded from scratch a complete
networking stack (ie. my shit doesn't stink and I'm here to tell you about
it :-))) I think your claims are pretty much out of whack.</p>

<p>Starting from initial implementation to having all the locking disappear
from the kernel profiles during any given load was composed of three tasks:</p>

<p>

<ol>

<li><p>Is this object almost entirely reader based (or the corrolary)?
Use special locking that exploits this.  See linux/brlock.h for one such
"special locking" we invented to handle these cases optimally.</p>

<p>This transformation results in ZERO shared dirty cache lines if the
initial analysis is correct.</p></li>

<li><p>Can we "fan out" the locking so that people touching seperate objects
%99 of the time touch different cache lines?</p>

<p>This doesn't mean "more per-object locking", it means more like "more
per-zone locking".  Per-hashchain locking falls into this category and is
very effective for any load I have ever seen.</p></li>

<li>Is this really a per-cpu "thing"?  The per-cpu SKB header caches are an
example of this.  The per-cpu SLAB magazines are yet another.</li>

</ol>

</p>

<p>Another source of scalability problems has nothing to do with whether you do
some kind of clustering or not.  You are still going to get into situations
where multiple cpus want (for example) page 3 of libc.so :-)  (what I'm
trying to say is that it is a hardware issue in some classes of situations)</p>

<p>Frankly, after applying #1 and/or #2 and/or #3 above to what shows up to
have contention (I claim the ipv4 stack to have had this done for it) there
isn't much you are going to get back.  I see zero reasons to add any more locks
to ipv4, and I don't think we've overdone it in the networking either.</p>

<p>Even more boldly, I claim that Linux's current ipv4 scales further than
anything coming out of Sun engineering.  From my perspective Sun's scalability
efforts are more in line with "rubber-stamp" per-object locking when things
show up in the profiles than anything else.  Their networking is really big
and fat.  For example the Solaris per-socket TCP information is nearly 4 times
the size of that in Linux (last time I checked their headers).  And as we
all know their stuff sits on top of some thick infrastructure (ie. STREAMS)
(OK, here is where someone pops up a realistic networking benchmark where
we scale worse than Solaris.  I would welcome such a retort because it'd
probably end up being a really simple thing to fix.)</p>

<p>My main point: I think we currently scale as far as we could in the
places we've done the work (which would include networking) and it isn't
"too much locking".</p>

<p>The problem areas of scalability, for which no real solution is evident yet,
involve the file name lookup tree data structures, ie. the dcache under Linux.
All accesses here are tree based, and everyone starts from similar roots.
So you can't per-node or per-branch lock as everyone traverses the same paths.
Furthermore you can't use "special locks" as in #1 since this data structure
is neither heavy reader nor heavy writer.</p>

<p>But the real point here is that SMP/cc clusters are not going to solve
this name lookup scaling problem.</p>

<p>The dcache_lock shows up heavily on real workloads under current Linux.
And it will show up just as badly on a SMP/cc cluster.  SMP/cc clusters talk
a lot about "put it into a special filesystem and scale that all you want"
but I'm trying to show that frankly thats where the "no solution evident"
scaling problems actually are today.</p>

<p>If LLNL was not too jazzed up about your proposal, I right now don't
blame them.  Because with the information I have right now, I think your
claims about it's potential are bogus.</p>

<p>I really want to be shown wrong, simply because the name path locking
issue is one that has been giving me mental gas for quite some time.</p>

<p>Another thing I've found is that SMP scalability changes that help the
"8, 16, 32, 64" cpu case almost never harm the "4, 2" cpu cases.  Rather,
they tend to improve the smaller cpu number cases.  Finally, as I think Ingo
pointed out recently, some of the results of our SMP work has even improved
the uniprocessor cases.</p>

</quote>

<p>Elsewhere, Rik van Riel said, <quote who="Rik van Riel">I'll have to agree
with Larry that Linux really isn't going anywhere in particular and seems
to be making progress through sheer luck.</quote> Daniel Phillips quipped,
<quote who="Daniel Phillips">You just reminded me of Minnesota Fats most
famous quote: "The more I practice, the luckier I get"</quote> And Linus
Torvalds also said to Rik:</p>

<quote who="Linus Torvalds">

<p>Hey, that's not a bug, that's a FEATURE!</p>

<p>You know what the most complex piece of engineering known to man in the
whole solar system is?</p>

<p>Guess what - it's not Linux, it's not Solaris, and it's not your car.</p>

<p>It's you. And me.</p>

<p>And think about how you and me actually came about - not through any
complex design.</p>

<p>Right. "sheer luck".</p>

<p>Well, sheer luck, AND:</p>

<p>

<ul>

<li>free availability and _crosspollination_ through sharing of "source
   code", although biologists call it DNA.</li>

<li>a rather unforgiving user environment, that happily replaces bad
   versions of us with better working versions and thus culls the herd
   (biologists often call this "survival of the fittest")</li>

<li>massive undirected parallel development ("trial and error")</li>

</ul>

</p>

<p>I'm deadly serious: we humans have _never_ been able to replicate something
more complicated than what we ourselves are, yet natural selection did it
without even thinking.</p>

<p>Don't underestimate the power of survival of the fittest.</p>

<p>And don't EVER make the mistake that you can design something better
than what you get from ruthless massively parallel trial-and-error with a
feedback cycle. That's giving your intelligence _much_ too much credit.</p>

<p>Quite frankly, Sun is doomed. And it has nothing to do with their
engineering practices or their coding style.</p>

</quote>

<p>Rik replied venomously:</p>

<quote who="Rik van Riel">

<p>Don't forget the fact that 2.4 is the first kernel you managed to get
stable under high load since 1.2.</p>

<p>Both 2.0 and 2.2 didn't get stable until Alan took over and Alan's 2.4
fork got stable some 4 months before your 2.4 tree got stable.</p>

<p>I think you've pretty much proven how well random development works.</p>

</quote>

<p>Close by, Alan backed up some of Rik's criticism, using the Virtual Memory
subsystem as the example:</p>

<quote who="Alan Cox">

<p>Linus kept ignoring, refusing and merging conflicting patches. The -ac
tree since 2.4.9-ac or so with Rik's actual fixes he wanted Linus to takes
passes the Red Hat test suite. 2.4.16 kind of passes it now.</p>

<p>It had nothing to do with the VM being broken and everything to do
with what Linus applied. As it happens it looks like the new VM is better
performing for low loads which is good, but the whole VM mess wasn't bad QA
and wasn't bad design.</p>

<p>Linus was even ignoring patches that fixed comments in the VM code that
referenced old behaviour. And due to the complete lack of VM documentation
at the moment I can only assume he's been dropping Andrea's VM comments/docs
too.</p>

</quote>

<p>Stanislav Meduna asked if Red Hat's test suite was
available anywhere; and Chris Ricker and David gave links to <a
href="http://people.redhat.com/bmatthews/cerberus/">http://people.redhat.com/bmatthews/cerberus/</a>.</p>

<p>Elsewhere, several folks seemed to think Linus was advocating making random
changes to the code in the hopes that evolution would sort it all out over the
millennia. As Tim Hockin put it, <quote who="Tim Hockin">a very interesting
argument, but not very pertinent - we don't have 10's of thousands of year
or even really 10's of years.  We have to use intellect to root out the
obviously bad ideas, and even more importantly the bad-but-not-obviously-bad
ideas.</quote> Linus clarified:</p>

<quote who="Linus Torvalds">

<p>Directed evolution - ie evolution that has more specific goals, and faster
penalties for perceived failure, works on the scale of tens or hundreds of
years, not tens of thousands. Look at dog breeding, but look even more at
livestock breeding, where just a few decades have made a big difference.
</p>

<p>The belief that evolution is necessarily slow is totally unfounded.</p>

<p>HOWEVER, the belief that _too_ much direction is bad is certainly not
unfounded: it tends to show up major design problems that do not show up
with less control. Again, see overly aggressive breeding of some dogs causing
bad characteristics, and especially the poultry industry.  </p>

<p>And you have to realize that the above is with entities that are much
more complex than your random software project, and where historically you
have not been able to actually influence anything but selection itself.</p>

<p>Being able to influence not just selection, but actually influencing the
_mutations_ that happen directly obviously cuts down the time by another
large piece.</p>

<p>In short, your comment about "not pertinent" only shows that you are
either not very well informed about biological changes, or, more likely,
it's just a gut reaction without actually _thinking_ about it.</p>

<p>Biological evolution is alive and well, and does not take millions of
years to make changes. In fact, most paleolontologists consider some of
the changes due to natural disasters to have happened susprisingly fast,
even in the _absense_ of "intelligent direction".</p>

<p>Of course, at the same time evolution _does_ heavily tend to favour
"stable" life-forms (sharks and many amphibians have been around for millions
of years). That's not because evolution is slow, but simply because good
lifeforms work well in their environments, and if the environment doesn't
change radically they have very few pressures to change.</p>

<p>There is no inherent "goodness" in change. In fact, there are a lot of
reasons _against_ change, something we often forget in technology. The fact
that evolution is slow when there is no big reason to evolve is a _goodness_,
not a strike against it.</p>

</quote>

<p>Elsewhere, Victor Yodaiken also didn't buy the "sheer luck" argument. He
said, <quote who="Victor Yodaiken">Linux is what it is because of design,
not accident. And you know that better than anyone.</quote> But Linus came
back with:</p>

<quote who="Linus Torvalds">

<p>Let's just be honest, and admit that it wasn't designed.</p>

<p>Sure, there's design too - the design of UNIX made a scaffolding for the
system, and more importantly it made it easier for people to communicate
because people had a mental _model_ for what the system was like, which
means that it's much easier to discuss changes.</p>

<p>But that's like saying that you know that you're going to build a car
with four wheels and headlights - it's true, but the real bitch is in the
details.</p>

<p>And I know better than most that what I envisioned 10 years ago has
_nothing_ in common with what Linux is today. There was certainly no
premeditated design there.</p>

<p>And I will claim that nobody else "designed" Linux any more than I did,
and I doubt I'll have many people disagreeing. It grew. It grew with a lot
of mutations - and because the mutations were less than random, they were
faster and more directed than alpha-particles in DNA.</p>

</quote>

<p>Victor had also said (getting back to Larry's point), <quote who="Victor
Yodaiken">The question is whether Linux can still be designed at current
scale.</quote> To which Linus said in his same post:</p>

<quote who="Linus Torvalds">

<p>Trust me, it never was.</p>

<p>And I will go further and claim that _no_ major software project that
has been successful in a general marketplace (as opposed to niches) has ever
gone through those nice lifecycles they tell you about in CompSci classes.
Have you _ever_ heard of a project that actually started off with trying to
figure out what it should do, a rigorous design phase, and a implementation
phase?</p>

<p>Dream on.</p>

<p>Software evolves. It isn't designed. The only question is how strictly
you _control_ the evolution, and how open you are to external sources of
mutations.</p>

<p>And too much control of the evolution will kill you. Inevitably, and
without fail. Always. In biology, and in software.</p>

<p>Amen.</p>

</quote>

<p>Horst von Brand also replied to Victor:</p>

<quote who="Horst von Brand">

<p>I'd say it is better because the mutations themselves (individual patches)
go through a _very_ harsh evaluation before being applied in the "official"
sources. There is a population of kernels out there (each developer has a
few, distributions check out others, ...), only what survives there has got
a chance to be considered for inclusion.</p>

<p>Sure, this is not the only way Linux moves forward. But it is a large
factor in the success of "Release early. Release often. Take patches from
everywhere."</p>

</quote>

<p>Larry felt that all this "evolution" stuff was just pure nonsense, and Linus
"spouting off". Elsewhere, he replied directly to Linus, saying:</p>

<quote who="Larry McVoy">

<p>Yeah, right, Linus.  We should all go home and turn loose the monkeys
and let them pound on the keyboard.  They'll just as good a job, in fact,
by your reasoning they'll get there faster, they aren't so likely to waste
time trying to design it.</p>

<p>I can't believe the crap you are spewing on this one and I don't think
you do either.  If you do, you need a break.  I'm all for letting people
explore, let software evolve, that's all good.  But somebody needs to keep
an eye on it.</p>

<p>If that's not true, Linus, then bow out.   You aren't needed and *you*
just proved it.  You can't have it both ways.  Either you are here for a
reason or you aren't.  So which is it?  You're arguing that you don't matter.
I personally don't agree, I think Linux would be a pile of dog doo without you.
If you don't agree, back off and see what happens.</p>

</quote>

<p>Daniel Phillips replied, <quote who="Daniel Phillips">If you've been
involved in any design sessions with Linus - if you could even grace them
with that name - you know he relies way more on intuition than process.
Actually, far from taking the role of the omniscient creator, he tends to act
more like the survival test.  Not that he's short of the necessary skills
to do it your way.  I think he does it the way he does it because it's fun
and interesting and, oh yes, effective.</quote></p>

<p>Linus also replied to Larry. To the idea that someone had to "keep an
eye" on software evolution, Linus chuckled, <quote who="Linus Torvalds">Like
somebody had to keep an eye on our evolution so that you had a chance to be
around?</quote> And to the idea of his indispensability, he said:</p>

<quote who="Linus Torvalds">

<p>Oh, absolutely.</p>

<p>I wish more people realized it. Some people realize it only when they
get really pissed off at me and say "Go screw yourself, I can do this on
my own". And you know what? They are right too, even if they come to that
conclusion for what I consider the wrong reasons.</p>

<p>The reason I'm doing Linux is not because I think I'm "needed". It's
because I enjoy it, and because I happen to believe that I'm better than
most at it. Not necessarily better than everybody else around there, but
good enough, and with the social ties to make me unbeatable right now.</p>

<p>But "indispensable"? Grow up, Larry. You give me too much credit.</p>

<p>And why should I bow out just because I'm not indispenable? Are you
indispensable for the continued well-being of humanity? I believe not,
although you are of course free to disagree. Should you thus "bow out"
of your life just because you're strictly speaking not really needed?</p>

<p>Do I direct some stuff? Yes. But, quite frankly, so do many others. Alan
Cox, Al Viro, David Miller, even you. And a lot of companies, which are
part of the evolution whether they realize it or not. And all the users,
who end up being part of the "fitness testing".</p>

<p>And yes, I actually do believe in what I'm saying.</p>

</quote>

<p>Elsewhere, he added, <quote who="Linus Torvalds">the people who think you
"design" software are seriously simplifying the issue, and don't actually
realize how they themselves work.</quote> And again elsewhere, he said:</p>

<quote who="Linus Torvalds">

<p>The impressive part is that Linux development could _look_ to anybody
like it is that organized.</p>

<p>Yes, people read literature too, but that tends to be quite spotty. t's
done mainly for details like TCP congestion control timeouts etc - they are
_important_ details, but at the same time we're talking about a few hundred
lines out of 20 _million_.</p>

<p>And no, I'm no tclaiming that the rest is "random". But I _am_ claiming
that there is no common goal, and that most development ends up being done
for fairly random reasons - one persons particular interest or similar.</p>

<p>It's "directed mutation" on a microscopic level, but there is very little
macroscopic direction. There are lots of individuals with some generic feeling
about where they want to take the system (and I'm obviously one of them),
but in the end we're all a bunch of people with not very good vision.</p>

<p>And that is GOOD.</p>

<p>A strong vision and a sure hand sound like good things on paper. It's
just that I have never _ever_ met a technical person (including me) whom I
would trust to know what is really the right thing to do in the long run.</p>

<p>Too strong a strong vision can kill you - you'll walk right over the edge,
firm in the knowledge of the path in front of you.</p>

<p>I'd much rather have "brownian motion", where a lot of microscopic directed
improvements end up pushing the system slowly in a direction that none of
the individual developers really had the vision to see on their own.</p>

<p>And I'm a firm believer that in order for this to work _well_, you have
to have a development group that is fairly strange and random.</p>

<p>To get back to the original claim - where Larry idolizes the Sun engineering
team for their singlemindedness and strict control - and the claim that
Linux seems ot get better "by luck": I really believe this is important.</p>

<p>The problem with "singlemindedness and strict control" (or "design") is
that it sure gets you from point A to point B in a much straighter line,
and with less expenditure of energy, but how the HELL are you going to
consistently know where you actually want to end up? It's not like we know
that B is our final destination.</p>

<p>In fact, most developers don't know even what the right _intermediate_
destinations are, much less the final one. And having somebody who shows you
the "one true path" may be very nice for getting a project done, but I have
this strong belief that while the "one true path" sometimes ends up being the
right one (and with an intelligent leader it may _mostly_ be the right one),
every once in a while it's definitely the wrong thing to do.</p>

<p>And if you only walk in single file, and in the same direction, you only
need to make one mistake to die.</p>

<p>In contrast, if you walk in all directions at once, and kind of feel
your way around, you may not get to the point you _thought_ you wanted,
but you never make really bad mistakes, because you always ended up having
to satisfy a lot of _different_ opinions. You get a more balanced system.</p>

<p>This is what I meant by inbreeding, and the problem that UNIX traditionally
had with companies going for one niche.</p>

<p>(Linux companies also tend to aim for a niche, but they tend to aim for
_different_ niches, so the end result is the very "many different directions"
that I think is what you _want_ to have to survive).</p>

</quote>

<p>Ingo Molnar agreed with Linus, and responded to his "we're all a bunch
of people with not very good vision", saying:</p>

<quote who="Ingo Molnar">

<p>the fundamental reasons why this happens are the following, special
conditions of our planet:</p>

<p>

<ul>

<li>the human brain has a limited capacity, both in terms of 'storage'
   and 'computational power'.</li>

<li>the world itself, at least how we understand it currently, is
   inherently random. (Such randomness is the main driving force of 'structure'
   as well, it seems.)</li>

<li>this planet has limited resources, so 'survival of the fittest' is
   still the main driving force of 'life'.</li>

<li>we do not know and understand the rules of our world yet, and chip
   technology (which drives and enables operating systems) is right at
   the edge (and often beyond the edge) of what physics is capable of
   explaining today. We simply do not know what breakthrough (or brick wall
   of performance) might happen in 1, 2 or 5 years. We did not know 50 years
   ago that something like 'SMP' would happen and be commonplace these days. I
   mean, often we dont even know what might happen in the next minute.</li>

</ul>

</p>

<p>due to these fundamental issues the development of 'technology' becomes
very, very unpredictable. We only have 5 billion brain cells, and there's no
upgrade path for the time being. Software projects such as Linux are already
complex enough to push this limit. And the capacity limits of the human
brain, plus the striving towards something better (driven by human needs)
cause thousands of ambitios people working on parts of Linux in parallel.</p>

<p>a few things are clear:</p>

<p>

<ul>

<li>if we knew the rules of this world and knew how to apply them to every
  detail then we'd be building the 'perfect chip' by this christmas, and
  there would probably be no need for anything else, ever.</li>

<li>if the human brain (and human fingers) had no limits then we'd be
  designing the 'perfect OS' from grounds up and write it in 2 minutes.</li>

<li>and if the world wasnt random then there would probably be nothing
  on this planet, ever.</li>

</ul>

</p>

<p>but the reality is that we humans have severe limits, and we do not
understand this random world yet, so we'll unevitably have lots of fun
writing random pieces of Linux (or other) code in many many years to come.</p>

<p>in fact, most computer science books are a glaring example of how limited
the human brain is, and how small and useless part of the world we are able
to explain exactly ;-)</p>

<p>and frankly, i'd *very* disappointed if it was possible to predict the
future beyond our lifetime, and if it was possible to design a perfect enough
OS that does not need any changing in the foreseable future. I'd be a pretty
disappointed and bored person, because someone would predict what happens
and we'd only be dumbly following that grand plan. But the reality is that
such grand plan does not exist. One of the exciting things about developing
an OS is that we almost never know what's around the next corner.</p>

<p>This whole effort called Linux might look structured on the micro-level
(this world *does* appear to have some rules apart of chaos), but it simply
*cannot* be anything better than random on the macro (longterm) level. So
we better admit this to ourselves and adapt to it.</p>

<p>And anyone who knows better knows something that is worth a dozen Nobel
prizes.</p>

</quote>

<p>It was a very long discussion.</p>

</section>

<section
  title="Networking Documentation"
  subject="Finally, CBQ nearly completely documented"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0111.3/1949.html"
  posts="21"
  startdate="30 Nov 2001 16:33:41 -0800"
  enddate="09 Dec 2001 17:12:00 -0800"
>

<p>Bert Hubert announced:</p>

<quote who="Bert Hubert">

<p>After preparing my talk on CBQ/HTB (<a
href="http://ds9a.nl/cbq-presentation">http://ds9a.nl/cbq-presentation</a>),
I finally understood how CBQ and filters etc truly work. And I wrote it down.
Check out the Linux Advanced Routing &amp; Shaping HOWTO, it's changed a lot!</p>

<p>Especially this part is very new, please check it for mistakes and
inconsistencies:</p>

<p><a
href="http://ds9a.nl/2.4Routing/HOWTO//cvs/2.4routing/output/2.4routing-9.html">http://ds9a.nl/2.4Routing/HOWTO//cvs/2.4routing/output/2.4routing-9.html</a></p>

<p>I even got 'split' and 'defmap' figured out, which should be a first. There
is not a single other page online that tells you correctly what these do.</p>

<p>One thing - does *anybody* understand how hash tables work in tc filter,
and what they do? Furthermore, I could use some help with the tc filter
police things.</p>

<p>So if you do understand how these work, please drop me a line.</p>

</quote>

<p>He replied to himself a couple days later, with more enhancements:</p>

<quote who="Bert Hubert">

<p>Thanks to Andreas Steinmetz and David Sauer, tc hash tables are now
documented as well, thanks!</p>

<p>See:</p>

<p><a
href="http://ds9a.nl/2.4Routing/HOWTO//cvs/2.4routing/output/2.4routing-12.html">http://ds9a.nl/2.4Routing/HOWTO//cvs/2.4routing/output/2.4routing-12.html</a></p>

<p>And then 'Hashing filters for very fast massive filtering'.</p>

<p>I also finished documenting all parameters for TBF, CBQ, SFQ, PRIO, bfifo,
pfifo and pfifo_fast. All queues in the Linux kernel are now described in
the Linux Advanced Routing &amp; Shaping HOWTO, which can be found on</p>

<p><a href="http://ds9a.nl/2.4Routing">http://ds9a.nl/2.4Routing</a></p>

<p>I want to send this off to the LDP and Freshmeat somewhere next week,
I *would really* like people who are knowledgeable about this subject (this
means you, ANK &amp; Jamal 8) ) to read through this.</p>

<p>This HOWTO is rapidly becoming the perceived authoritative source for
traffic control in linux (google on 'Linux Routing' finds it), it might
as well be right! So if you have any time at all, check the parts you know
about. I expect mistakes.</p>

</quote>

<p>Someone else who'd been involved in this kind of documentation chimed in,
and they had a technical discussion about it.</p>

</section>

<section
  title="New Build Tools"
  subject="Converting the 2.5 kernel to kbuild 2.5"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0112.0/0458.html"
  posts="134"
  startdate="02 Dec 2001 17:06:12 -0800"
  enddate="11 Dec 2001 23:17:09 -0800"
>
<topic>Kernel Build System</topic>

<mention>Linus Torvalds</mention>

<p>Keith Owens proposed:</p>

<quote who="Keith Owens">

<p>Linus, the time has come to convert the 2.5 kernel to kbuild 2.5.  I
want to do this in separate steps to make it easier for architectures
that have not been converted yet.</p>

<p>2.5.1           Semi-stable kernel, after bio is working.</p>

<p>2.5.2-pre1      Add the kbuild 2.5 code, still using Makefile-2.5.
                i386, sparc, sparc64 can use either kbuild 2.4 or 2.5,
                2.5 is recommended.
                ia64 can only use kbuild 2.5.
                Other architectures continue to use kbuild 2.4.
                Wait 24 hours for any major problems then -</p>

<p>2.5.2-pre2      Remove kbuild 2.4 code, rename Makefile-2.5 to Makefile.
                i386, ia64, sparc, sparc64 can compile using kbuild 2.5.
                Other architectures cannot compile until they convert
                to kbuild 2.5.  The kbuild group can help with the
                conversion but without access to a machine we cannot
                test other architectures.  Until the other archs have
                been converted, they can stay on 2.5.2-pre1.</p>

<p>Doing the change in two steps provides a platform where both kbuild 2.4
and 2.5 work.  This allows other architectures to parallel test the old
and new kbuild during their conversion, I found that ability was very
useful during conversion.</p>

<p>The CML1 to CML2 conversion comes later, either in 2.5.3 or 2.5.4.</p>

<p>Linus, is this acceptable?</p>

</quote>

<p>Linus Torvalds didn't participate in this thread, but Eric S. Raymond
replied to Keith, saying, <quote who="Eric S. Raymond">The schedule I heard
from Linus at the kernel summit was that both changes were to go in between
2.5.1 and 2.5.2.   I would prefer sooner than later because I'm *really*
*tired* of maintaining a parallel rulebase.</quote> Elsewhere, Christoph
Hellwig asked, <quote who="Christoph Hellwig">Is the CML2 merge actually
agreed on?  I still strongly object to it and I know lots of kernel hackers
are the same opinion.</quote> Eric confirmed that CML2 was going in. In the
course of discussion, he also said, <quote who="Eric S. Raymond">by the way,
there is no CML1 :-).  Instead, there are four mutually incompatible dialects
and a rulebase that breaks in different ways depending on which interpreter
you use.  Well, maybe just three mutual incompatible dialects and one clone
-- but it's notoriously hard to verify that two interpreters have the same
accept language, so nobody knows for sure.</quote> Christoph replied:</p>

<quote who="Christoph Hellwig">

<p>There is a CML1 language specification, as written down in a file, namely
Documentation/kbuild/config-language.txt in the kernel tree.  There is one
tool (mconfig) which has a yacc-parser that implements that specification
completly, and some horrid ugly scripts in the tree that parse them in a
more or less working way.  There also are a number of other tools I don't
know to much about that understand the language as well.</p>

<p>All of these tools just require the runtime contained in the LSB and no
funky additional script languages.  Also none needs a binary intermediate
representation of the config.</p>

</quote>

<p>Eric zeroed in on the language reference:</p>

<quote who="Eric S. Raymond">

<p>I quote Linus at the 2.5 kernel summit: "Python is not an issue."
Unless and until he changes his mind about that, waving around this kind of
argument is likely to do your case more harm than good.</p>

<p>If you want to re-open the case for saving CML1, you'd be better off
demonstrating how CML1 can be used to (a) automatically do implied side-effects
when a symbol is changed, (b) guarantee that the user cannot generate a
configuration that violates stated invariants, and (c) unify the configuration
tree so that the equivalents of arch/* files never suffer from lag or skew
when an architecture-independent feature is added to the kernel.</p>

</quote>

<p>Christoph replied that Python <i>was</i> an issue, for him and others. He
claimed that CML1 could do all the things Eric wanted, though he didn't see the
need to do some of them. Eric said to this, <quote who="Eric S. Raymond">You
can spend all week telling us how easy it would be to implement all the CML2
benefits that CML1 doesn't have, if you like -- but one of the rules of this
game is that an ounce of working code beats a pound of handwaving.</quote>
David Woodhouse replied:</p>

<quote who="David Woodhouse">

<p>FWIW I have no particular problem with CML2. I agree that CML1 is fairly
limited, and can see the advantages in ditching it for a new language.</p>

<p>I do have objections to some of the other ideas which have been floated
for changing the behaviour of the config rules, which aren't strictly related
to the change in language.</p>

<p>I just want to make sure that the introduction of CML2 doesn't sneak in
controversial changes to the config behaviour to make my Aunt Tilley happy,
when those changes should be given individual consideration, not presented
as a fait accomplis.</p>

<p>If I can't have one without the other, I'd rather not have either -
CML1 may indeed suck, but it doesn't suck _that_ much.</p>

<p>But I figure we can trust you not to do that - can't we?</p>

</quote>

<p>Eric asked what in particular David wanted, and David replied, <quote
who="David Woodhouse">Simply assure me that I don't have to scan every line
of the CML2 files for such changes, and that you'll make a reasonable effort
to make the first set of CML2 rules match the existing CML1 behaviour, without
introducing any controversial changes.</quote> And Eric said, <quote who="Eric
S. Raymond">People like Giacomo and my other beta testers are keeping an eye
on me.  Don't sweat it.</quote> Close by, Giacomo Catenazzi also replied to
David's concerns, exlaining:</p>

<quote who="Giacomo Catenazzi">

<p>The rules are nearly the same (but written in another language).
The problem was in converting rules: esr found a lot of error: these error
should be corrected, also some rules are different.</p>

<p>Also converting rules, you surelly found some error: i.e. wrong dependencies
syntax, wrong implementation,....</p>

<p>I don't think esr changed non problematic rules, but one: all rules without
help become automatically dependent to CONFIG_EXPERIMENTAL. I don't like it,
but I understand why he makes this decision.</p>

<p>Remember: The config.in files contain a lot of errors, and automatic
tools can not find all.</p>

</quote>

<p>David and others started to object to Giacomo's third paragraph, but Eric quickly
corrected Giacomo, saying that it was CONFIG_EXPERT, not CONFIG_EXPERIMENTAL.
And he said:</p>

<quote who="Eric S. Raymond">

<p>this change is not wired in.  Comment out this declaration in the top-level
rulesfile:</p>

<p>condition nohelp on EXPERT</p>

<p>and it reverts to old behavior.</p>

</quote>

<p>David replied, <quote who="David Woodhouse">Good. Please make that the
default when submitting the first version of CML2. You can submit patches
which effect the change in behaviour later, and they can be individually
considered.</quote></p>

<p>Elsewhere, getting back to the subject of whether the kernel should depend
on having Python installed in the system, Matthias Andree asked Christoph
what exactly was his objection to Python. Alan Cox pointed out that the
dependency would be on Python2, which meant that most users wouldn't have
it. Matthias replied:</p>

<quote who="Matthias Andree">

<p>Every new kernel version required new tools, 2.2 particularly many,
2.4 also some, so it's just one more tool to add in the end.</p>

<p>Current distributions already ship with Python2, and probably all will
when distributors know that Python2 will be needed to configure Linux 2.5
or 2.6.</p>

</quote>

<p>Eric also thought Alan was overstating the unavailability of Python2, but the
discussion skewed off at that point.</p>

<p>Earlier in the discussion Matthias had said, <quote who="Matthias
Andree">Seriously: what do you fear? Losing the efforts you put into mconfig?
Linux 2.2 and 2.4 will be around for quite some time (not sure about mconfig
on 2.0, I don't use 2.0.x ATM).</quote> At this point Eric confessed:</p>

<quote who="Eric S. Raymond">

<p>Oops.  I wasn't going to tell anyone this yet, but since you've made this
argument I feel I must be up front here....</p>

<p>After CML2 has proven itself in 2.5, I do plan to go back to Marcelo
and lobby for him accepting it into 2.4, on the grounds that doing so will
simplify his maintainance task no end.  That's why I'm tracking both sides
of the fork in the rulebase, so it will be an easy drop-in replacement for
Marcelo as well as Linus.</p>

</quote>

<p>Giacomo yelled out:</p>

<quote who="Giacomo Catenazzi">

<p>Don't do it!  A stable kernel should be stable also on the building tools.
When Marcelo will correct some grave potential security problem, the user will
rebuild the kernel and it will found that it must install some other package
(machine with 2.4 are now common, python2 not yet so common) to secure his
kernel, it would be happy.</p>

<p>This is an example, but for a better maintainability you will give serious
problem to the novice kernel user.</p>

</quote>

<p>But Eric said simply that the final decision would rest with Marcelo. But
Alan also felt that a 2.2 backport would be <quote who="Alan Cox">somewhat
impractical. You will break all the existing additional configuration
tools for the 2.4 stable tree that people expect to continue to work.
Breaking them in 2.5 isnt a big issue, but breaking stable kernel trees is a
complete nono.</quote> And Dave Jones summed up his own objections, saying,
<quote who="Dave Jones">So anyone perfectly happy with an older distro that
didn't ship python2-and-whatever-else gets screwed when they want to build
a newer kernel. Nice.</quote> Edward Muller pointed out, <quote who="Edward
Muller">That's been the case all along, sans python2. Newer kernels need
newer tools. That's always been the case.</quote> But Alan said, <quote
who="Alan Cox">Not during stable releases. In fact we've jumped through
hoops several times to try and keep egcs built kernels working.</quote>
Trevor Smith, a little behind in the conversation, thought they were only
talking about 2.5, but Alan quipped, <quote who="Alan Cox">Erik is talking
about crapping in both trees, as opposed to 2.5 only.</quote></p>

<p>Elsewhere along the same sub-thread, Horst von Brand bemoaned, <quote
who="Horst von Brand">I just shudder when thinking that I'll have to learn
yet another weird language to be able to hack on Linux... C, gcc-isms with
asm() and all, a bit of CML1, now CML2, are OK; and now Python...</quote>
A lot of people pointed out that no one would need Python to use CML2, but
Horst replied that hacking on CML2 <i>was</i> kernel hacking, and required
learning Python.</p>

</section>

<section
  title="2.4 Development"
  subject="[PATCH] 2.4.16 kernel/printk.c (per processor initialization check)"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0112.0/0408.html"
  posts="25"
  startdate="02 Dec 2001 21:46:15 -0800"
  enddate="08 Dec 2001 17:32:29 -0800"
>

<mention>Alan Cox</mention>
<mention>William Lee Irwin III</mention>

<p>In the course of a bug hunt, Andrew Morton proposed for 2.2:</p>

<quote who="Andrew Morton">

<p>Marcelo,</p>

<p>after a fairly lengthy off-list discussion, it turns out that special-casing
printk is probably the best way to proceed to fix this one.</p>

<p>The problem is that the boot processor sets up the console drivers, and is
able to call them via printk(), but the application processors at that time
are not able to call printk() because the console device driver mappings are
not set up.  Undoing this inside the ia64 boot code is complex and fragile.
Possibly the problem exists on other platforms but hasn't been discovered
yet.</p>

<p>So the patch defines an architecture-specific macro
`arch_consoles_callable()' which, if not defined, defaults to `1', so the
impact to other platforms (and to uniprocessor ia64) is zero.</p>

</quote>

<p>Marcelo Tosatti replied, <quote who="Marcelo Tosatti">How hard would
it be to fix that on ia64 code?  I'm really not willing to apply this
kludge...</quote> William Lee Irwin III gave some technical reasons for doing
it, and David Mosberger felt the real question was just, <quote who="David
Mosberger">Do you agree that it should always be safe to call printk()
from C code?</quote> Alan Cox said that this might sound good in theory,
but that it was really up to themaintainers of each architecture to get it
right. And Marcelo also replied to David, answering:</p>

<quote who="Marcelo Tosatti">

<p>No if you can't access the console to print the message :)</p>

<p>Its just that I would prefer to see the thing fixed in arch-dependant
code instead special casing core code.</p>

</quote>

<p>But David replied:</p>

<quote who="David Mosberger">

<p>Only architecture specific problems should be fixed with architecture
specific code.</p>

<p>I'm not entirely sure whether this particular problem is architecture
specific.  Perhaps it is and, if so, I'm certainly happy to fix it in the
ia64 specific code.</p>

</quote>

<p>But, he went on, he was skeptical of that. Marcelo replied, <quote
who="Marcelo Tosatti">Prove, please. If you show me it can also happen on
other architectures, I'll be glad to apply the patch.</quote> David and
Alan went back and forth for a bit on implementation details, and the thread
petered out.</p>

</section>

<section
  title="2.4 Release Schedule"
  subject="Linux 2.4.17-pre5"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0112.0/1575.html"
  posts="52"
  startdate="06 Dec 2001 09:39:21 -0800"
  enddate="11 Dec 2001 15:14:34 -0800"
>

<p>Marcelo Tosatti released Linux 2.4.17-pre5 and added, <quote who="Marcelo
Tosatti">I'm going to release -pre versions more often from now on so people
can "see" what I'm doing with less latency: I hope that can make developer's
life easier.</quote></p>

</section>

<section
  title="Developer Scuffle In 2.4"
  subject="devfs unable to handle permission: 2.4.17-pre[4,5] / ALSA-0.9.0beta[9,10]"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0112.0/1703.html"
  posts="23"
  startdate="06 Dec 2001 15:35:28 -0800"
  enddate="10 Dec 2001 02:46:29 -0800"
>
<topic>Backward Compatibility</topic>
<topic>FS: devfs</topic>

<mention>Rene Rebe</mention>

<p>Rene Rebe reported some anomalous devfs behavior in 2.4.17-pre4, and Richard
Gooch replied that he had improved devfs' behavior in the latest version, to
discard duplicate entries. But Roman Zippel replied that Richard shouldn't
change the behavior in the stable series, since the option had always been
valid up to that point. Richard replied, <quote who="Richard Gooch">Well, no,
it was never a valid option. It was always a bug. In any case, the stricter
behaviour isn't preventing people from using their drivers, it's just issuing a
warning. The user-space created device node still works.</quote> Roman replied,
<quote who="Roman Zippel">But the driver doesn't. You changed the driver API in
subtle way! You cannot change the behaviour of devfs_register during 2.4. Do
whatever you want in 2.5, but drivers depend on the current behaviour and
devfs has to be fixed not these drivers.</quote> Richard disagreed that the
drivers would no longer work. He reiterated that the new code only produced
a warning. Roman presented, <quote who="Roman Zippel">devfs_mk_dir returns an
error now, so the driver won't be able to make new dev nodes available. So far
it was legal to manually create a directory under devfs, now it's suddenly
an error.</quote> Richard replied, <quote who="Richard Gooch">It was always
an error, you just got away with it.</quote> Roman blew his stack at this
point, asking how Richard could expect anyone to take devfs seriously if
<quote who="Roman Zippel">You suddenly change the behaviour of devfs during
a stable release in a noncompatible way.  Distributions and their users that
followed _your_ advice are suddenly fucked up, that's irresponsible.</quote>
He pointed to one of Richard's own scripts that committed the very same
error, but Richard only replied blithely, <quote who="Richard Gooch">Oh, the
"tar kludge". That script has been obsolete for over a year and a half. I
should have removed it ages ago. I really should get around to doing that
one day.</quote> Roman replied (Ccing Marcelo Tosatti), <quote who="Roman
Zippel">You should have done this a year ago. Permission management with the
"tar kludge" was a valid option so far and is currently in use. There was
no warning period that this future would be obsolete.</quote> [...] <quote
who="Roman Zippel">The tar solution only works until 2.4.16, the new devfsd
provides this only with 2.4.17. I'll leave the final decision to Marcelo,
whether he accepts this or not. I shut up now, may someone else explain the
meaning of compatibility to you.</quote> Marcelo, not having read the whole
thread, asked Roman to explain the problem in detail. Richard replied:</p>

<quote who="Richard Gooch">

<p>I can explain it. The old devfs core was forgiving of duplicate entries,
while the new one is not (it now gives EEXIST errors).</p>

<p>There are some broken boot scripts (modelled after the long obsolete
rc.devfs script) which dump a whole bunch of inodes in /dev, prior to loading
various modules. So the drivers which load after this will not be able to
create their devfs entries (because said entries already exist).</p>

<p>This is not actually a problem for leaf nodes, since the user-space created
device nodes will still work. It just results in a warning message. It
is potentially a problem for directories, if the following conditions are
all met:</p>

<p>

<ul>

<li>boot scripts create a directory in /dev</li>

<li>driver loads and tries to create same directory (fails)</li>

<li>driver creates device nodes under that directory using the handle it
obtained from creating the directory</li>

<li>device nodes driver is trying to create were not created by boot script
(i.e. the untar process).</li>

</ul>

</p>

<p>This is a fairly rare case. Usually, if you are "restoring" some inodes, you
will be restoring the individual device nodes as well as the parent directory
(otherwise, what's the point of restoring?).  So, in this case, the device
nodes that the user wants to use will still be there (created by the boot
script) and will work fine. There will just be a bunch of warning messages.</p>

<p>Possibly, depending on the driver, the device nodes it tried to create may
appear in the /dev directory, rather than the intended subdirectory. While
perhaps messy, this isn't actually harmful.</p>

<p>This thread was spawned because of a bug report with two issues. The
first issue was the harmless warning messages about duplicate leaf node
entries. Nothing broke.</p>

<p>The second issue was due to a broken devfsd configuration file which
caused the wrong permissions to be set on a directory. This led to Roman
thinking that the new devfs core was breaking stuff. As I've shown above,
the breakage is a rare corner case involving an obsolete script.</p>

</quote>

<p>To Richard's reference to broken boot scripts, Roman followed with,
<quote who="Roman Zippel">Which is still included in the kernel tree and at
least Mandrake is currently using it.  There were no signs of deprecation,
so people are legally using it.</quote> And to Richard's statement that
that the behavior was still the same, but just produced additional warning
messages, Roman tacked on, <quote who="Roman Zippel">Wrong, these are not
just warning messages, the driver API has changed.</quote> To Richard's
statement that the device nodes would still be available and would work
fine, Roman said, <quote who="Roman Zippel">Except the dynamic update of
device nodes won't happen anymore, so it affects also all leaf nodes in the
directories (e.g. partition entries won't be created/removed anymore). Events
won't be created for these nodes as well, so configurations depending on
this are broken as well.</quote> And to Richard's statement that the only
actual breakage was with a rare corner case, Roman exploded again, with,
<quote who="Roman Zippel">"rare corner case"??? Richard, this isn't funny
anymore. :-( BTW restoring backward compatibility is probably just a couple
of lines code, but first you had to admit that it's broken.</quote></p>

<p>Marcelo asked, <quote who="Marcelo Tosatti">Richard, Are the above problems
really introduced by the changes?</quote> Richard admitted they were, but
added that he still felt it was a very rare circumstance that would cause
any trouble.  He said:</p>

<quote who="Richard Gooch">

<p>In general, if you are tarring and untarring inodes, you take the whole
directory and put it all back again. Even the partitioning event is a corner
case, since you're most likely to install a new drive (and thus have no inodes
to "restore") and then partition. And even the obsolete rc.devfs only saved
away inodes which had been changed, not everything.</p>

<p>However, if this concerns you, I can send a patch that effectively restores
the old behaviour for directories. It's just a matter of grabbing the right
lock, fiddling a flag and returning a different entry. But I definately want
to keep a warning message. I want there to be some pain for broken or really
obsolete configurations.</p>

</quote>

<p>Marcelo replied that it would be fine to leave the warning message in,
but that the change of behavior should go into 2.5. End Of Thread (tm).</p>

</section>

<section
  title="Divergence Of 2.4 And 2.5"
  subject="Patches in 2.4.17-pre2 that aren't in 2.5.1-pre8"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0112.1/0463.html"
  posts="9"
  startdate="10 Dec 2001 01:51:44 -0800"
  enddate="10 Dec 2001 10:47:37 -0800"
>
<topic>MAINTAINERS File</topic>
<topic>Sound: i810</topic>

<mention>Adrian Bunk</mention>

<p>Adrian Bunk felt that patches going into 2.4 should also go into 2.5 by
default, though he'd noticed a lot of patches were not going in to 2.5, though
they went into 2.4 right away. Alan Cox explained, <quote who="Alan Cox">In
many cases that isnt true, and for a lot of the pending patches its pointless
merging them into 2.5 until 2.5 gets into better shape. Going back over them
as you have done is something that does need doing, but not until the block
layer has some semblance of completion about it.</quote> Nicolas Aspert had
the opposite problem. He'd submitted a patch that had gone right away into
2.5, but Marcelo Tosatti hadn't accepted it for 2.4. Marcelo replied:</p>

<quote who="Marcelo Tosatti">

<p>Who is the maintainer of the driver ?</p>

<p>Try to think from my side: I may have no hardware or time to test all
patches which come to me.</p>

<p>Please, people, send this kind of driver changes to the people who know
all hardware specific details.</p>

<p>If there is no maintainer for i810, I'll be glad to apply it on 2.4.18pre
and wait for reports. Not going to be on 2.4.17, though.</p>

</quote>

<p>Alan replied to Marcelo's second paragraph with a smile, <quote who="Alan
Cox">Ditto. Thats what 2.4.x-pre_1_ is for 8)</quote></p>

<p>Nicolas said that the MAINTAINERS file listed no one as the maintainer,
and so all patches had to go to Marcelo by default. But he added, <quote
who="Nicolas Aspert">You're the boss ;-) As I said, I got at least 3 successful
feedbacks for this patch, and the fact that Linux got it into the tree kinda
confirms my thought that there might not be too many things broken in it. The
choice of putting it into 2.4.17 or 2.4.18 is entirely yours, and I accept
it whatever it is. Keep me informed ;-)</quote> At this point, Robert Love
chimed in, <quote who="Robert Love">The maintainer is MIA.  I have been doing
recent work on the driver.  I can confirm Nicolas patch is correct.</quote>
And Marcelo replied simply, <quote who="Marcelo Tosatti">Lets wait 2.4.18pre
for this one, OK ?</quote></p>

</section>

<section
  title="2.4 Development Philosophy"
  subject="Linux 2.4.17-pre8"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0112.1/0629.html"
  posts="5"
  startdate="10 Dec 2001 12:12:53 -0800"
  enddate="10 Dec 2001 19:14:40 -0800"
>

<p>Marcelo Tosatti announced 2.4.17-pre8, saying, <quote who="Marcelo
Tosatti">Here goes pre8: The next one is going to be -rc1 so please don't
send me any more updates and only bugfixes now. Updates will be queued for
2.4.18-pre1.</quote> He included a set of one-line changelog information, and
Oliver Xymoron replied, <quote who="Oliver Xymoron">I'd like to suggest again
having patches include change logs. The basic idea is for a patch to contain
a file like patch.foo in the top-level that includes the changelog entry and
the maintainer runs a release script that build a changelog by concatenating
all the patch.* files and then either appending them to an actual ChangeLog
(preferred) or deleting them. This would make it much easier for people to
know the details of what got fixed without further burdening The Maintainer.
One way to get this started would be to gather up all the existing change
logs, add them to a ChangeLog file, and add a note about the file being
auto-generated.</quote> Marcelo replied, <quote who="Marcelo Tosatti">I know
this is a much better thing to do for the changelog... However I really want
to spend my available time now on letting 2.4 in a better state.</quote>
To which Oliver said, <quote who="Oliver Xymoron">Fair enough.  Perhaps I'll
send you a patch/script after a few dot releases go by.</quote></p>

</section>

</kc>

