<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="58" date="13 Mar 2000 00:00:00 -0800" />

<stats posts="1425" size="6129" contrib="473" multiples="226" lastweek="196">

<person posts="63" size="189" who="Alan Cox " />
<person posts="43" size="135" who="Jeff Garzik " />
<person posts="31" size="123" who="Andrea Arcangeli " />
<person posts="25" size="107" who="" />
<person posts="23" size="112" who="Ricky Beam " />
<person posts="20" size="72" who="Jamie Lokier " />
<person posts="18" size="121" who="Jeff V. Merkey " />
<person posts="18" size="98" who="Khimenko Victor " />
<person posts="17" size="82" who="Richard B. Johnson " />
<person posts="16" size="56" who="Alexander Viro " />
<person posts="16" size="48" who="Stephen C. Tweedie " />
<person posts="15" size="81" who="Richard Gooch " />
<person posts="14" size="58" who="Ingo Molnar " />
<person posts="13" size="51" who="James Manning " />
<person posts="13" size="47" who="Boris Okun " />
<person posts="13" size="43" who="Werner Almesberger " />
<person posts="12" size="64" who="Mike A. Harris " />
<person posts="12" size="63" who="Peter T. Breuer " />
<person posts="12" size="46" who="Linus Torvalds " />
<person posts="11" size="57" who="Christoph Rohland " />
<person posts="11" size="39" who="Horst von Brand " />
<person posts="10" size="66" who="Pavel Machek " />
<person posts="10" size="64" who="Sergey Kubushin " />
<person posts="10" size="49" who="Mike Galbraith " />
<person posts="10" size="39" who=" (H. Peter Anvin)" />
<person posts="10" size="39" who="Rask Ingemann Lambertsen " />
<person posts="10" size="37" who="Tigran Aivazian " />
<person posts="10" size="27" who="" />
<person posts="9" size="80" who="Manfred Spraul " />
<person posts="9" size="55" who="Trever Adams " />
<person posts="9" size="37" who="Jos Visser " />
<person posts="9" size="36" who="Lyle Coder " />
<person posts="9" size="32" who="David Woodhouse " />
<person posts="9" size="31" who="" />
<person posts="9" size="28" who="Guest section DW " />
<person posts="9" size="26" who="Peter Zaitsev " />
<person posts="8" size="69" who=" (Kanoj Sarcar)" />
<person posts="8" size="46" who="Lawrence Manning " />
<person posts="8" size="46" who="Riley Williams " />
<person posts="8" size="34" who="ADAM Sulmicki " />
<person posts="8" size="32" who="Albert D. Cahalan " />
<person posts="8" size="31" who="Miles Lane " />
<person posts="8" size="30" who="Ronald G. Minnich " />
<person posts="8" size="28" who="Andre Hedrick " />
<person posts="8" size="25" who="Gregory Maxwell " />
<person posts="8" size="25" who="David S. Miller " />
<person posts="7" size="77" who=" (david parsons)" />
<person posts="7" size="29" who="Anton Ivanov " />
<person posts="7" size="26" who="Khimenko Victor " />
<person posts="7" size="26" who="Thomas Sailer " />
<person posts="7" size="24" who="Bill Wendling " />
<person posts="6" size="33" who="Jens Axboe " />
<person posts="6" size="30" who="=?iso-8859-15?Q?Ga=EBl_Qu=E9ri?= " />
<person posts="6" size="29" who="David Forrest " />
<person posts="6" size="26" who="" />
<person posts="6" size="24" who="Theodore Y. Ts'o " />
<person posts="6" size="23" who="Artur Skawina " />
<person posts="6" size="22" who="Julian Anastasov " />
<person posts="6" size="20" who="Phil DeBecker " />
<person posts="6" size="20" who="Chris Wedgwood " />
<person posts="6" size="20" who="Jonathan Walther " />
<person posts="5" size="56" who="Dimitris Michailidis " />
<person posts="5" size="28" who="Niels Kristian Bech Jensen " />
<person posts="5" size="20" who="V Ganesh " />
<person posts="5" size="18" who="Whit Blauvelt " />
<person posts="5" size="17" who="Dominik Kubla " />
<person posts="5" size="17" who="Horst von Brand " />
<person posts="5" size="16" who="Helge Hafting " />
<person posts="5" size="14" who="Stuart Inglis " />
<person posts="4" size="20" who="Tigran Aivazian " />
<person posts="4" size="18" who="Hans Reiser " />
<person posts="4" size="18" who="Daniel J Blueman " />
<person posts="4" size="18" who="Shourya Sarcar " />
<person posts="4" size="16" who="Jonathan Woithe " />
<person posts="4" size="15" who="Garrick Staples " />
<person posts="4" size="15" who="Douglas Gilbert " />
<person posts="4" size="15" who="Bradley D. LaRonde " />
<person posts="4" size="14" who="Andreas Muck " />
<person posts="4" size="14" who="Andrey Savochkin " />
<person posts="4" size="13" who="Andrew Morton " />
<person posts="4" size="13" who="Andreas Jaeger " />
<person posts="4" size="13" who="Matti Aarnio " />
<person posts="4" size="13" who="George " />
<person posts="4" size="12" who="Pierfrancesco Caci " />
<person posts="4" size="11" who="Richard Henderson " />
<person posts="4" size="11" who="Garst R. Reese " />
<person posts="3" size="85" who="Bill K. " />
<person posts="3" size="69" who="Robert de Vries " />
<person posts="3" size="36" who="david parsons " />
<person posts="3" size="22" who="Bernhard Dobbels " />
<person posts="3" size="16" who="Georgios Kossionis " />
<person posts="3" size="15" who="Matthew Vanecek " />
<person posts="3" size="15" who="Dunlap, Randy " />
<person posts="3" size="14" who="Nix " />
<person posts="3" size="13" who="Mike Coleman " />
<person posts="3" size="13" who="Ingo Oeser " />
<person posts="3" size="12" who="Stephen Frost " />
<person posts="3" size="12" who="Phil N " />
<person posts="3" size="12" who="Robert L. Harris " />
<person posts="3" size="12" who="Ville Herva " />
<person posts="3" size="11" who="Jon Rifkin " />
<person posts="3" size="11" who="Tuukka Toivonen " />
<person posts="3" size="11" who="Jesse Pollard " />
<person posts="3" size="11" who="Andy Henroid " />
<person posts="3" size="11" who="Mark H. Wood " />
<person posts="3" size="11" who="Rick Stevens " />
<person posts="3" size="10" who="Andreas Dilger " />
<person posts="3" size="10" who="Matt Spong " />
<person posts="3" size="10" who="Simon Huggins " />
<person posts="3" size="10" who="Q " />
<person posts="3" size="10" who="Paul Vojta " />
<person posts="3" size="10" who="Rogerio Brito " />
<person posts="3" size="10" who="Brandon S. Allbery KF8NH " />
<person posts="3" size="10" who="Trond Myklebust " />
<person posts="3" size="10" who="Andrzej Krzysztofowicz " />
<person posts="3" size="10" who="David Weinehall " />
<person posts="3" size="9" who="Bjorn Wesen " />
<person posts="3" size="9" who=" (Linus Torvalds)" />
<person posts="3" size="9" who="Jeffrey B. Siegal " />
<person posts="3" size="9" who="Alessandro Zummo " />
<person posts="3" size="9" who="Ben Kosse " />
<person posts="3" size="9" who="Vojtech Pavlik " />
<person posts="3" size="9" who="Val Henson " />
<person posts="3" size="9" who="Tigran Aivazian " />
<person posts="3" size="9" who="Paul Mackerras " />
<person posts="3" size="9" who="Walter Hofmann " />
<person posts="3" size="9" who="Ralf Baechle " />
<person posts="3" size="9" who="Wakko Warner " />
<person posts="3" size="9" who="Olivier Galibert " />
<person posts="3" size="8" who=" (Arjan van de Ven)" />
<person posts="3" size="8" who="Stephen L. Favor " />
<person posts="3" size="8" who="Anton Blanchard " />
<person posts="3" size="8" who="" />
<person posts="3" size="8" who="Ron Flory " />
<person posts="3" size="8" who="Jan Van Sweevelt " />
<person posts="3" size="8" who="Jeff Garzik " />
<person posts="3" size="8" who="Lars Kellogg-Stedman " />
<person posts="3" size="8" who="Rik van Riel " />
<person posts="3" size="7" who="" />
<person posts="3" size="7" who="Tim Waugh " />
<person posts="3" size="7" who="Fausto Saporito " />
<person posts="3" size="7" who="Jeff Dike " />
<person posts="3" size="7" who="Rajendra Kumar Singh " />
<person posts="2" size="71" who="Jamie Lokier " />
<person posts="2" size="27" who="Thomas Molina " />
<person posts="2" size="27" who="Michael H. Warfield " />
<person posts="2" size="22" who="Chuck Lever " />
<person posts="2" size="20" who="Larry Woodman " />
<person posts="2" size="18" who="Mr. James W. Laferriere " />
<person posts="2" size="14" who="Frank Bernard " />
<person posts="2" size="14" who="John Summerfield " />
<person posts="2" size="13" who="Andrey Panin " />
<person posts="2" size="13" who="Riley Williams " />
<person posts="2" size="12" who="The Doctor What " />
<person posts="2" size="11" who="Jamie Lokier " />
<person posts="2" size="11" who="Ian Peters " />
<person posts="2" size="10" who="Morten Garkier Hendriksen " />
<person posts="2" size="10" who="Harald Koenig " />
<person posts="2" size="10" who="Glen Turner " />
<person posts="2" size="10" who="Andrew Morton " />
<person posts="2" size="10" who="Jack (Butch) Griffin " />
<person posts="2" size="10" who="Gleb Natapov " />
<person posts="2" size="9" who="Olaf Kirch " />
<person posts="2" size="9" who="Neil Brown " />
<person posts="2" size="8" who="Gerard Roudier " />
<person posts="2" size="8" who="Jakub Jelinek " />
<person posts="2" size="8" who="David Wragg " />
<person posts="2" size="8" who="" />
<person posts="2" size="8" who="Michael Clark " />
<person posts="2" size="8" who="Rainer Mager " />
<person posts="2" size="8" who="David Schleef " />
<person posts="2" size="7" who="James Nelson " />
<person posts="2" size="7" who=" (Kevin Buhr)" />
<person posts="2" size="7" who="Ingo Buescher " />
<person posts="2" size="7" who="Stephen Satchell " />
<person posts="2" size="7" who="Russell King " />
<person posts="2" size="7" who="Willy Tarreau " />
<person posts="2" size="7" who="Craig Kulesa " />
<person posts="2" size="7" who="Simon Kirby " />
<person posts="2" size="7" who="Jeff Layton " />
<person posts="2" size="7" who="Michael Meissner " />
<person posts="2" size="7" who="Lech Szychowski " />
<person posts="2" size="6" who="Olaf Titz " />
<person posts="2" size="6" who="Paul Jakma " />
<person posts="2" size="6" who="Michael Nelson " />
<person posts="2" size="6" who="Aneesh Kumar K.V " />
<person posts="2" size="6" who="ejc " />
<person posts="2" size="6" who="Andi Kleen " />
<person posts="2" size="6" who="Andrew Park " />
<person posts="2" size="6" who="Frank van Maarseveen " />
<person posts="2" size="6" who=" (Rogier Wolff)" />
<person posts="2" size="6" who="Dave Mielke " />
<person posts="2" size="6" who="Ben McCann " />
<person posts="2" size="6" who="Butter, Frank " />
<person posts="2" size="6" who=" (Nick Holloway)" />
<person posts="2" size="6" who="Thierry Vignaud " />
<person posts="2" size="6" who="Andrzej Krzysztofowicz " />
<person posts="2" size="6" who="Chris Noe " />
<person posts="2" size="6" who="Michael Abd-El-Malek " />
<person posts="2" size="6" who="Towers, Tim (London) " />
<person posts="2" size="6" who="Jes Sorensen " />
<person posts="2" size="6" who="Hayden A. James " />
<person posts="2" size="6" who="Philip Blundell " />
<person posts="2" size="6" who="Andi Kleen " />
<person posts="2" size="5" who="Ivan Kokshaysky " />
<person posts="2" size="5" who="Lars Marowsky-Bree " />
<person posts="2" size="5" who="James Simmons " />
<person posts="2" size="5" who="Momchil Velikov " />
<person posts="2" size="5" who="Aydin Okutanoglu " />
<person posts="2" size="5" who="Davide Libenzi " />
<person posts="2" size="5" who="Rui Sousa " />
<person posts="2" size="5" who="=?ISO-8859-1?Q?Manu=EBl?= Beunder " />
<person posts="2" size="5" who="Ben LaHaise " />
<person posts="2" size="5" who="Matthew Kirkwood " />
<person posts="2" size="5" who="Chuck Perry " />
<person posts="2" size="5" who="Lennon " />
<person posts="2" size="5" who="Brian Gerst " />
<person posts="2" size="5" who="Iustin Pop " />
<person posts="2" size="5" who="Damir Cosic " />
<person posts="2" size="5" who="Oliver Xymoron " />
<person posts="2" size="4" who="Vijay Subramani " />
<person posts="2" size="4" who="" />
<person posts="2" size="4" who="Dragan Stancevic " />
<person posts="2" size="4" who="G. Sudhanva " />
<person posts="2" size="4" who="" />
<person posts="2" size="4" who="Chetan Sakhardande " />
<person posts="1" size="33" who="ben soo " />
<person posts="1" size="33" who="Javi Polo " />
<person posts="1" size="14" who="Tim Coleman " />
<person posts="1" size="13" who="Mike Phillips " />
<person posts="1" size="12" who="Michael O'Cleirigh " />
<person posts="1" size="10" who="Eugene Crosser " />
<person posts="1" size="10" who="Peter T. Breuer " />
<person posts="1" size="10" who="Oliver Borowiak " />
<person posts="1" size="8" who="Andrei Pitis " />
<person posts="1" size="8" who="Bakonyi Ferenc " />
<person posts="1" size="7" who="James R Bruce " />
<person posts="1" size="7" who="Markus Schoder " />
<person posts="1" size="7" who="Steffen Kern " />
<person posts="1" size="6" who="Andi Kleen " />
<person posts="1" size="6" who="Schoder, Markus " />
<person posts="1" size="6" who="David Lang " />
<person posts="1" size="6" who="Aaron Denney " />
<person posts="1" size="5" who="Gregory Zornetzer " />
<person posts="1" size="5" who="Ani Joshi " />
<person posts="1" size="5" who="Saxena, Sunil " />
<person posts="1" size="5" who="David Ford " />
<person posts="1" size="5" who="Jan-Frode Myklebust " />
<person posts="1" size="5" who="Crowder, Brian " />
<person posts="1" size="5" who="Igor Mozetic " />
<person posts="1" size="5" who="Chris McClellen " />
<person posts="1" size="5" who="Rupp, Ed J " />
<person posts="1" size="5" who="Lawrence Walton " />
<person posts="1" size="5" who="Christopher Thompson " />
<person posts="1" size="5" who="Chris Dunlop " />
<person posts="1" size="5" who="Bernd Paysan " />
<person posts="1" size="5" who="Joseph Pingenot " />
<person posts="1" size="5" who="Nix " />
<person posts="1" size="5" who="David Waite " />
<person posts="1" size="5" who="Vernon H. Soden " />
<person posts="1" size="4" who="Eric Brunet " />
<person posts="1" size="4" who="Daniel (Kinnison)Silverstone " />
<person posts="1" size="4" who="Gregory Hosler " />
<person posts="1" size="4" who="=?iso-8859-1?Q?Fran=E7ois=20D=E9sarm=E9nien?= " />
<person posts="1" size="4" who="Petru Paler " />
<person posts="1" size="4" who="Joel Becker " />
<person posts="1" size="4" who="Harold Oga " />
<person posts="1" size="4" who="Ingles, Raymond " />
<person posts="1" size="4" who="Ed Tomlinson " />
<person posts="1" size="4" who="WANG,YIDING (HP-SanJose,ex1) " />
<person posts="1" size="4" who="Adam C Powell IV " />
<person posts="1" size="4" who="Alwyn Schoeman " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="Alexander Viro " />
<person posts="1" size="4" who="Michael Mess " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="Rahul Sinha " />
<person posts="1" size="4" who="Jan Kasprzak " />
<person posts="1" size="4" who="Mike Phillips " />
<person posts="1" size="4" who="=?iso-8859-1?Q?J=F6rg?= Zieting " />
<person posts="1" size="4" who="LENGARD Pascal OCISI " />
<person posts="1" size="4" who="Jorge Nerin " />
<person posts="1" size="4" who="Sean Connor " />
<person posts="1" size="4" who="Erik Andersen " />
<person posts="1" size="4" who="J.W. Hoogervorst " />
<person posts="1" size="4" who="Mike Touloumtzis " />
<person posts="1" size="4" who="Richard Torkar " />
<person posts="1" size="4" who="kalyan " />
<person posts="1" size="4" who="Kjartan Maraas " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Larry McVoy " />
<person posts="1" size="3" who="Polton, Richard " />
<person posts="1" size="3" who="SammyTheSnake " />
<person posts="1" size="3" who="Andre Pang " />
<person posts="1" size="3" who="Berend Ozceri " />
<person posts="1" size="3" who="Mark Zealey " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Calvin Shen " />
<person posts="1" size="3" who="Kedar Patankar " />
<person posts="1" size="3" who="John Tully " />
<person posts="1" size="3" who="Jacob Alifrangis " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="=?iso-8859-1?Q?Taneli_V=E4h=E4kangas?= " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Steve Dodd " />
<person posts="1" size="3" who="Dan Malek " />
<person posts="1" size="3" who="Mark Sawle " />
<person posts="1" size="3" who=" (Kristian Koehntopp)" />
<person posts="1" size="3" who="Hank Leininger " />
<person posts="1" size="3" who="Laurence Sanford " />
<person posts="1" size="3" who="Dag Brattli " />
<person posts="1" size="3" who="Lee Willis " />
<person posts="1" size="3" who="Peter J. Braam " />
<person posts="1" size="3" who="Yau Man NG " />
<person posts="1" size="3" who="David Rees " />
<person posts="1" size="3" who="Giacomo Amabile Catenazzi " />
<person posts="1" size="3" who="CaT " />
<person posts="1" size="3" who=" (Eric W. Biederman)" />
<person posts="1" size="3" who="John Cavan " />
<person posts="1" size="3" who=" (Tom Crane)" />
<person posts="1" size="3" who=" (Tony E. Bennett)" />
<person posts="1" size="3" who="Steve Underwood " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="TenThumbs " />
<person posts="1" size="3" who="PhilN " />
<person posts="1" size="3" who="James Riden " />
<person posts="1" size="3" who="Rob Hall " />
<person posts="1" size="3" who="Gerd Knorr " />
<person posts="1" size="3" who="Patrick Mau " />
<person posts="1" size="3" who="Chris Meadors " />
<person posts="1" size="3" who="Thomas S. Iversen " />
<person posts="1" size="3" who="Patrick Cole " />
<person posts="1" size="3" who="Stefan Monnier " />
<person posts="1" size="3" who="Remi Turk " />
<person posts="1" size="3" who="Mike Castle " />
<person posts="1" size="3" who="Marcus Sundberg " />
<person posts="1" size="3" who="Folkert van Heusden " />
<person posts="1" size="3" who="Jes Sorensen " />
<person posts="1" size="3" who="Philipp Rumpf " />
<person posts="1" size="3" who="William Scott Lockwood III " />
<person posts="1" size="3" who="Christoph Hellwig " />
<person posts="1" size="3" who="Jean-Miel Lee (Xiang Ji-ye) " />
<person posts="1" size="3" who="David Edelsohn " />
<person posts="1" size="3" who="Richard Guenther " />
<person posts="1" size="3" who="Mikael Pettersson " />
<person posts="1" size="3" who="Josh Myer " />
<person posts="1" size="3" who="Petr Vandrovec " />
<person posts="1" size="3" who="Borislav Deianov " />
<person posts="1" size="3" who="James A Simmons " />
<person posts="1" size="3" who="Dan Kegel " />
<person posts="1" size="3" who=" (Joerg Reuter DL1BKE)" />
<person posts="1" size="3" who="Donald Sharp " />
<person posts="1" size="3" who="Khalid Al-Abdulaaly " />
<person posts="1" size="3" who="John Ripley " />
<person posts="1" size="3" who="Ceri Storey " />
<person posts="1" size="3" who="Michal Jaegermann " />
<person posts="1" size="3" who="Hadess " />
<person posts="1" size="3" who="Richard Guenther " />
<person posts="1" size="3" who="Marco Meloni " />
<person posts="1" size="3" who="Juan Casero " />
<person posts="1" size="3" who="Mikulas Patocka " />
<person posts="1" size="3" who="Peter Blomgren " />
<person posts="1" size="3" who="Herbert Huber " />
<person posts="1" size="3" who="Petko Manolov " />
<person posts="1" size="3" who="Ceri Storey " />
<person posts="1" size="3" who="Alexey Zhuravlev " />
<person posts="1" size="3" who=" (Paul Menage)" />
<person posts="1" size="3" who="Martin Schulz " />
<person posts="1" size="3" who="Jacob Luna Lundberg " />
<person posts="1" size="3" who="Strohm Thomas (FV/SLD) * " />
<person posts="1" size="3" who="Burton Windle " />
<person posts="1" size="3" who="Romano Giannetti " />
<person posts="1" size="3" who="Frank v Waveren " />
<person posts="1" size="3" who="Xavier Boix " />
<person posts="1" size="3" who="Tim Walberg " />
<person posts="1" size="3" who="Frank Krauss " />
<person posts="1" size="3" who="ethan mindlace fremen " />
<person posts="1" size="3" who="Luke Miller " />
<person posts="1" size="3" who="Jesper Juhl " />
<person posts="1" size="3" who=" (Scott Lurndal)" />
<person posts="1" size="3" who="Roman Zippel " />
<person posts="1" size="3" who="Michael T. Babcock " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Paolo Zeppegno " />
<person posts="1" size="3" who="Martin Maciaszek " />
<person posts="1" size="3" who="Badrinath Venkatachari " />
<person posts="1" size="3" who="Randy Dunlap " />
<person posts="1" size="3" who="Ralf Sinoradzki " />
<person posts="1" size="3" who="Daniel Phillips " />
<person posts="1" size="3" who="Matthias Runge " />
<person posts="1" size="3" who="Anton Altaparmakov " />
<person posts="1" size="3" who=" (Hans-Joachim Baader)" />
<person posts="1" size="3" who="David Schwartz " />
<person posts="1" size="3" who="Eugenio Jimenez Yguacel " />
<person posts="1" size="2" who="Anand Swarup " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Andrew McNabb " />
<person posts="1" size="2" who="Daryll Strauss " />
<person posts="1" size="2" who="Aaditya Rai " />
<person posts="1" size="2" who="Dale Amon " />
<person posts="1" size="2" who=" (Jens-Uwe Mager)" />
<person posts="1" size="2" who="Douglas Gilbert " />
<person posts="1" size="2" who="Maciej W. Rozycki " />
<person posts="1" size="2" who="Rick Hohensee " />
<person posts="1" size="2" who="Muthian Sivathanu " />
<person posts="1" size="2" who="Patrick Spinler " />
<person posts="1" size="2" who="zamri " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="John Kodis " />
<person posts="1" size="2" who="Jan Bobrowski " />
<person posts="1" size="2" who="Jeff Moyer " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Grzegorz Jablonski " />
<person posts="1" size="2" who="Andrei Pelinescu - Onciul " />
<person posts="1" size="2" who="Marc SCHAEFER " />
<person posts="1" size="2" who="Paul Fulghum " />
<person posts="1" size="2" who="kmlhy " />
<person posts="1" size="2" who="Joe Smith " />
<person posts="1" size="2" who="Stephen Williams " />
<person posts="1" size="2" who="Lars Vahlen " />
<person posts="1" size="2" who="Nils Faerber " />
<person posts="1" size="2" who=" (Matthias Urlichs)" />
<person posts="1" size="2" who=" (Eugene Crosser)" />
<person posts="1" size="2" who="Matthew A Reklau " />
<person posts="1" size="2" who="Cataldo Thomas " />
<person posts="1" size="2" who="=?ISO-8859-1?Q? Fabi=E1n?= =?ISO-8859-1?Q?Mart=EDnez?= Osorio " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Stuart MacDonald " />
<person posts="1" size="2" who="Artur Frysiak " />
<person posts="1" size="2" who="Maurito " />
<person posts="1" size="2" who="Rik van Riel " />
<person posts="1" size="2" who="Steve Rihards " />
<person posts="1" size="2" who="Michael Marxmeier " />
<person posts="1" size="2" who="Chris Adams " />
<person posts="1" size="2" who="Matthias Leonhardt " />
<person posts="1" size="2" who="Justin " />
<person posts="1" size="2" who="Marcus Meissner " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Jason L Tibbitts III " />
<person posts="1" size="2" who="Vrushabhendra K G " />
<person posts="1" size="2" who="Jim Nance " />
<person posts="1" size="2" who="Sandy Harris " />
<person posts="1" size="2" who="Adam J. Richter " />
<person posts="1" size="2" who="George Bonser " />
<person posts="1" size="2" who="Tom Leete " />
<person posts="1" size="2" who="Rusty Russell " />
<person posts="1" size="2" who="clubneon " />
<person posts="1" size="2" who="Daniel Roesen " />
<person posts="1" size="2" who="Mipam " />
<person posts="1" size="2" who="Alex Belits " />
<person posts="1" size="2" who="Krzysztof Halasa " />
<person posts="1" size="2" who=" (Uwe Ohse)" />
<person posts="1" size="2" who="Keith Bottner " />
<person posts="1" size="2" who="=?iso-8859-1?q?willy=20tarreau?= " />
<person posts="1" size="2" who="Lee Chin " />
<person posts="1" size="2" who="Aleksey I Zavilohin " />
<person posts="1" size="2" who="Vijay Subramani " />
<person posts="1" size="2" who="Pradish Mathews " />
<person posts="1" size="2" who="Mark Hahn " />
<person posts="1" size="2" who="pramodh mallipatna " />
<person posts="1" size="2" who="Craig " />
<person posts="1" size="2" who="Geert Uytterhoeven " />
<person posts="1" size="2" who="root " />
<person posts="1" size="2" who="Tim Waugh " />
<person posts="1" size="2" who="Alexander V. Lukyanov " />
<person posts="1" size="2" who="Leos Bitto " />
<person posts="1" size="2" who="Jarno Lahteenmaki " />
<person posts="1" size="2" who="Ashutosh S. Rajekar " />
<person posts="1" size="2" who="Jonathan Hseu " />
<person posts="1" size="2" who="Matthias Andree " />
<person posts="1" size="2" who="Blu3Viper " />
<person posts="1" size="2" who="" />

</stats>

<section
  title="/proc Vs. devfs"
  subject="[patch-2.3.47] /proc/driver/microcode -&gt; /dev/cpu/microcode"
  archive=""
  posts="92"
  startdate="22 Feb 2000 00:00:00 -0800"
  enddate="01 Mar 2000 00:00:00 -0800"
>
<topic>Executable File Format</topic>
<topic>FS: devfs</topic>
<topic>FS: procfs</topic>
<topic>Ioctls</topic>

<mention>Werner Almesberger</mention>

<p>In the course of posting and discussing a patch to the microcode driver,
Tigran Aivazian suggested that perhaps /proc/driver/rtc should be moved to
/dev/cpu/rtc. He said, <quote who="Tigran Aivazian">I know that /dev/rtc is
already is /dev/misc/rtc but that is the actual driver whilst the human
readable regular file could happily live in /dev/cpu/rtc (although it is not
strictly "on cpu" but only a couple of inches away :)</quote></p>

<p>Richard Gooch replied:</p>

<quote who="Richard Gooch">

<p>I think we should be strict with the new devfs
namespace. If it's not actually part of the CPU, it doesn't belong in
/dev/cpu. If we're not strict, we end up with the same ad-hockery as /proc.</p>

<p>I'll (reluctantly) be the gatekeeper for devfs names if it means the
namespace is kept sane.</p>

</quote>

<p>H. Peter Anvin volunteered, with, <quote who="H. Peter Anvin">If you don't
want to do it, I guess I could. At some point I will work on changing the
Linux Device List to include the new names; I can't really promise to do it
immediately, though.</quote> There was no reply to this, but Tigran replied
to Richard with his explanation, <quote who="Tigran Aivazian">in addition to
the binary-data device /dev/rtc (which is in /dev/misc/rtc of devfs). The
/proc/driver/rtc is the human-readable dump of RTC data and I thought it
should find its proper place in devfs instead of /proc for the same reasons
why we moved microcode from /proc/driver to /dev/cpu.</quote></p>

<p>Jeff Garzik felt that devfs was not suited for text output such as
/proc/driver/rtc, but Richard, also replying to Tigran, felt that such a
thing did belong somewhere in devfs. Jeff replied again, this time to
Richard and more forcefully, <quote who="Jeff Garzik">Devfs _is not_ the
place for generic, driver-specific text output to userspace. The RTC data
dump is in /proc and is not a /dev device for a reason...</quote> But
Richard asked what that reason was, and asserted that /proc should be only
for processes. There were a number of replies.</p>

<p>Jeff explained:</p>

<quote who="Jeff Garzik">

<p>RTC is a standard driver, and devfs is an
experimental driver defaulted to off? :) Once devfs makes it into Mandrake,
RedHat, ... then it will be time to consider moving EXISTING interfaces from
/proc -&gt; devfs.</p>

<p>Until then, moving existing interfaces to devfs requires the user to run
devfs for functionality which was previously available without. Since
installing devfs is not a "flip a switch and forget" change, you cannot move
existing interfaces to devfs without due consideration, and giving devfs
time to filter out to the userbase at large.</p>

<p>Patience, grasshopper.  :)  I agree with you in principle, but late in the
2.3.x cycle is NOT the time to break existing interfaces.</p>

</quote>

<p>Richard agreed with this logic, and added, <quote who="Richard Gooch">I'm
not trying to push removal of all the procfs interfaces at this point. But
it would be nice to see patches in my inbox which added devfs interfaces
:-)</quote></p>

<p>To Richard's previous assertion that /proc should be only for processes,
Horst von Brand also replied:</p>

<quote who="Horst von Brand">

<p>Non sequitur. I mostly agree with the /proc
bit, but I also agree that /dev is not the place for random text output.
Simply because many people have no use for devfs, but need the data being
shown.</p>

<p>So, the ways out AFAIKS are:</p>

<p><ul>

<li>/sys directory with system data (a replacement for groveling around in
kmem)</li>

<li>Clean up /proc, and put it back in there.</li>

</ul>
</p>

<p>Any alternative needs a HPA that just vetoes stuff in bad format or with
stupid names.</p>

</quote>

<p>And Alan Cox added, <quote who="Alan Cox">Peter happily vetoes and fixes
naming even in things like IBM's naming choice for their S/390 port. I think
we are in safe hands 8)</quote></p>

<p>Werner Almesberger also replied to Richard's statement that /proc should be
only for processes, saying that the people actually putting stuff
<i>into</i> /proc, at least, felt the data should be there. Tigran replied
that the benefit of devfs was a rational namespace, <quote who="Tigran
Aivazian">instead of just putting a lot of stuff in the root of /proc and
some things group into subdirectories.</quote> He concluded, <quote
who="Tigran Aivazian">After reading devfs/README and the code I am starting
to be on Richard's side that "tough, use devfs" is not such a bad idea,
after all :)</quote> Horst replied that the thing to do was to just clean up
/proc; and H. Peter responded to the "tough, use devfs" statement (which had
been coined not by Tigran or Richard, but in a different sub-thread
altogether), with, <quote who="H. Peter Anvin">It would be a *very* bad idea
for some applications to have a system where we couldn't run without devfs,
unless there is considerable benefit to such an arrangement. So far, there
is no evidence of that, so having a system that works with a traditional
/dev should be a requirement.</quote> But he added, <quote who="H. Peter
Anvin">However, that's *NOT* an argument for putting things in
/proc.</quote></p>

<p>Elsewhere, Richard commented that given the choice, <quote who="Richard
Gooch">I'd advocate we move from a "tough, use procfs" attitude to a "tough,
use devfs" attitude,</quote> which also got a number of replies. Jeff
pointed out that realistically, disabling devfs would be a lot more common
than disabling /proc. Horst reiterated his position to Richard, saying,
<quote who="Horst von Brand">What you are proposing is just moving a
dungheap from one place to the other.</quote></p>

<p>George Greer also felt that existing solutions worked fine, but Tigran
replied, <quote who="Tigran Aivazian">Once upon a time we had a working (not
perfect but working) aout-based Linux systems. What was the point of
switching to ELF? Lots of points. So it is with devfs - it solves a lot of
problems, all nicely documented in
Documentation/filesystems/devfs/README.</quote> A little later, Alan
commented, <quote who="Alan Cox">Your 68K of devfs does actually get you a
whole pile of things beyond /dev. The trouble is none of them are things
that embedded people care about.</quote></p>

<p>Theodore Y. Ts'o also expressed to Richard's comment about preferring
"tough, use devfs" over "tough, use /proc":</p>

<quote who="Theodore Y. Ts'o">

<p>You know, it wasn't that long ago that you
said that using devfs should be a choice, and not something that would ever
be forced. Now you're saying "tough, use devfs". I guess your earlier
statements were just made to pursuade people to accept it into the kernel,
and now you're changing your mind?</p>

<p>As far as devfs not having to be mounted over /dev, if we *are* going to
move to a world where for certain functionality devfs is mandatory, it would
be useful to standardize using a standard pathname for accessing devfs ---
say, /devfs. If you do want to mount devfs over /dev, then /devfs can be a
symlink to /dev. If you don't want to mount devfs over /dev, then devfs can
just be mounted on top of /devfs.</p>

<p>This way, application programs that need fixed, compiled-in paths can just
use /devfs and be guaranteed to work on both kinds of systems.</p>

</quote>

<p>There were several replies to Ted as well. Jes Sorensen agreed with him, and
added, <quote who="Jes Sorensen">I always had the impression that if devfs
ever went into the official kernel it was going to be as an option, leaving
system functional without enabling it. If devfs is going to be a mandatory I
would like to see a statement about this from Linus.</quote> Eric W.
Biederman replied:</p>

<quote who="Eric W. Biederman">

<p>Who do think is silently pushing devfs?</p>

<p>
<ul>

<li>Linus has argued that sysctl is bad (hardcoded magic numbers).</li>

<li>Linus has argues that ioctl is bad (Not the UNIX way, all could/should go through read/write)</li>

<li>Others have argued procfs is bad (you can't handle device permissions...).</li>

<li>Richard Gooch argued devfs seems to handle these issues best...</li>

<li>The next day devfs was in the development kernel.</li>

</ul>
</p>

<p>But I do agree there is no need to rush deployment or change. However we are
certainly moving in a devfs direction.</p>

</quote>

<p>Tigran replied to Ted's claim that Richard had changed his story from
advocating devfs as a choice to advocating it as a requirement, <quote
who="Tigran Aivazian">Theodore, with all due respect, I think you are being
a bit tough on Richard. It is inevitable that initial acceptance of an idea
requires some smooth talking and convincing whilst when the idea is accepted
one could go on and gently push humans towards doing the right thing as a
norm as opposed to as "optional". There is nothing wrong about that. Richard
pushed me a bit towards converting microcode to devfs and my only resistance
(as I found out) was due to ignorance - when that is overcome I am only
grateful to him that he cared enough to convince me.</quote> And Richard
added, <quote who="Richard Gooch">It's also because in private email Linus
has pushed me further than I was intending to go. He basically took off the
reigns and gave me a nudge :-)</quote></p>

</section>

<section
  title="Kernel Panic In 2.3.47"
  subject="2.3.47 kernel panic with serial.o"
  archive=""
  posts="5"
  startdate="23 Feb 2000 00:00:00 -0800"
  enddate="04 Mar 2000 00:00:00 -0800"
>
<topic>MAINTAINERS File</topic>

<p>Yau Man NG discovered that in 2.3.47, the following simple commands (as
root) would hang the final command unkillably (and could crash the system --
see below):</p>

<blockquote>

shell# /sbin/insmod serial<br />
shell# /sbin/rmmod serial<br />
shell# /sbin/insmod serial<br />
shell# /sbin/rmmod serial

</blockquote>

<p>The system would still work, but the final 'rmmod' wouldn't terminate, and
would be unkillable, and would use a lot of CPU time. Other modules could be
'insmod'ed or 'rmmod'ed without a problem. However, doing a 'cat /dev/ttyS0'
would cause a kernel panic. The problem was not repeatable in 2.2.13; Ian
Peters replied:</p>

<quote who="Ian Peters">

<p>Just a heads up -- this problem, as reported by
myself and several other during February for kernels 2.3.45 and up (and
possibly 2.3.44) persists up through 2.3.48. So far, all of the people who
have reported problems have reported the exact same symptoms (well, I'd
never tried to access the serial device after trying to unload the module,
but doing so just now gave me an instant reboot, no oops message).</p>

<p>I've been unable to find anyone listed in MAINTAINERS who would seem to be
responsible for the generic serial driver; if there is such a person, could
someone point me in the right direction?</p>

</quote>

<p>Theodore Y. Ts'o claimed maintainership of the serial driver, and asked for
more detailed information about the hardware involved and the error messages
observed. Ian provided this, and Ted posted a one-line patch, and explained:</p>

<quote who="Theodore Y. Ts'o">

<p>I found the problem; it's not actually a bug
in the serial driver, but in the rewrite of the bottom-half drivers to use
tasklets.</p>

<p>When you remove the serial driver, it calls remove_bh(SERIAL_BH), which
calls tasklet_kill(). Tasklet_kill() uses a test_and_set synchronization
loop on the TASKLET_STATE_SCHED bit of t-&gt;state to make sure that tasklet
isn't being scheduled, and then waits for the tasklet to finish running. The
problem is that it doesn't clear the bit afterwards!</p>

<p>This means that after calling remove_bh(), the TASKLET_STATE_SCHED bit is
stuck on, which permanently disables that particular bottom-half handler
from ever working properly. It also means that the next time remove_bh() is
called for that bottom-half handler, it will get stuck in an (unkillable)
infinite loop.</p>

</quote>

<p>End Of Thread (tm).</p>

</section>

<section
  title="Loading A New Kernel From A Running System"
  subject="Load linux...from linux?"
  archive=""
  posts="18"
  startdate="23 Feb 2000 00:00:00 -0800"
  enddate="01 Mar 2000 00:00:00 -0800"
>
<topic>Access Control Lists</topic>
<topic>FS: NFS</topic>
<topic>FS: ext2</topic>
<topic>FS: ext3</topic>
<topic>Small Systems</topic>
<topic>User-Mode Linux</topic>

<mention>Jeff Garzik</mention>
<mention>Jesper Juhl</mention>

<p>Lars Kellogg-Stedman asked if a Linux equivalent of 'loadlin' were possible.
He explained, <quote who="Lars Kellogg-Stedman">For instance, it would be
nice if the last action when rebooting a linux system were (optionally) to
load and execute a new kernel image, rather than reset the system. Or better
yet, shutting down a linux system would return one to a boot loader prompt
from which one could select a new kernel (kind of a poor-man's open
firmware).</quote> Jesper Juhl gave a pointer to <a
href="http://user-mode-linux.sourceforge.net/">User-Mode Linux</a>, which he
acknowledged was not exactly what Lars had asked about, but was at least in
the same ballpark. Jeff Garzik gave a pointer to <a
href="http://www.acl.lanl.gov/linuxbios/">Linuxbios</a>, and suggested
grepping the page for "LOBOS". Dan Malek also replied to Lars' question, and
explained in response to the possibility of having the last action of a
running system be to load and execute a new kernel:</p>

<quote who="Dan Malek">

<p>I do this quite frequently on embedded systems.
Rather than try to write boot roms with network protocols, I just put a
Linux kernel in the flash rom. They can boot up using diskless NFS (or
whatever you want), and are hacked to reserve a chunk of contiguous physical
memory for loading the new kernel. I have a rather trivial program that will
mmap() the memory and copy a kernel file there. Then I modified the
machine_restart() to take a reboot command with a starting address. The
"gorom" function then disables interrupts, mmu, cache, and jumps to the
starting address of the new code.</p>

<p>The kernels I boot are all Linux/PPC compressed zImage.  Since they relocate
themselves and uncompress the kernel to the proper memory location, it
doesn't matter where they are initially loaded in physical memory. Works
very well.</p>

<p>I chose to reserved a big piece of physical memory because it was easy to
do. There are several variations on allocating memory for the new kernel,
with associated modifications to boot loader wrappers. I am sure you could
write a driver that would coalesce memory for the new image that would work
with any kernel, so from one kernel you could just boot another.</p>

</quote>

<p>Elsewhere, Werner Almesberger said that, before finding LOBOS, he'd spent
half a weekend trying to implement Lars' suggestion. He explained, <quote
who="Werner Almesberger">All the paging stuff in LOBOS looks quite elegant,
but I'm a little confused by how it does the final copy. Seems to me that
you may burn holes into your kernel image this way ... (My code maintains a
list of "sacred" pages, including the code page, which it moves away when it
has to overwrite their location. Basically the same procedure as in FiPaBoL
(part of the linux-7k boot code), but less of a mind twister, because it's
in C. Also, I leave all the setup to user space, so the kernel doesn't even
know what it is booting.)</quote></p>

<p>Ronald G. Minnich, also developing along the same lines, replied
peripherally, <quote who="Ronald G. Minnich">using LOBOS and ext3 I can chop
my laptop reboot time from 90 seconds or so to 43. We'd like to see it down
to 5 seconds, much time is lost on daemon startup and that initial mount of
ext2 where it seems to like to do a full-surface-scan of the disk
:-)</quote> and there followed an implementation discussion.</p>

</section>

<section
  title="ext3 Status And Discussion"
  subject="ext3 status?"
  archive=""
  posts="17"
  startdate="25 Feb 2000 00:00:00 -0800"
  enddate="03 Mar 2000 00:00:00 -0800"
>
<topic>FS: NTFS</topic>
<topic>FS: ext2</topic>
<topic>FS: ext3</topic>

<mention>Matthias Andree</mention>

<p>Matthias Andree noticed that the only available ext3 version was 0.0.2c,
which was already 3 months old and against 2.2.13; he asked if development
was still proceeding. Stephen C. Tweedie replied:</p>

<quote who="Stephen C. Tweedie">

<p>0.0.3 should be out within the week.  The
journal abort code is complete now for response to fatal errors such as EIO
in the journal.</p>

<p>In doing this work I've found that there are a number of options for the
future in terms of duplicating some journaling information to make it robust
against IO errors during recovery, but I'll not hold up the 0.0.3 release to
do that --- that will have to come in the future, and there will be a
journal format change involved. (Migration between the journal types will be
simple, of course.)</p>

</quote>

<p>Jeff V. Merkey came in with a question of his own. He said, <quote who="Jeff
V. Merkey">We are working on the on-disk conversion from Netware to EXT2 on
disk formats. I have not looked at the EXT3 code (but will soon). Were any
of the changes to the on-disk formats too radical that we should be aware
of?</quote> Stephen replied, <quote who="Stephen C. Tweedie">No, none at all
right now. The journal is in a separate inode referenced by a
currently-unused superblock field. There are a couple of new superblock
compatibility flags used. Nothing else has changed: all the clever stuff
goes on inside the journal itself.</quote></p>

<p>Jeff replied, asking if ext3 would automatically create the journal file if
it wasn't already present, or if an empty journal should be created by hand,
or what (he added, <quote who="Jeff V. Merkey">This is what I am doing at
present with NetWare2NTFS conversion (create it empty) and the first time
Windows 2000 mounts the converted volume, the journal and the first 16 meta
files are created when the volume is mounted.</quote>). Riley Williams
replied that if no journal were present, ext3 would simply drop through to
ext2; and Stephen confirmed this. Nearby, Andreas Dilger also explained,
<quote who="Andreas Dilger">There are comments in the ext3 code to the
affect that this</quote> [auto-creating the journal file] <quote
who="Andreas Dilger">will be done in the future, but currently you are
required to create a 10000 block file from userspace and record the inode
number (it will be #13 on a new filesystem). Your conversion utility would
have to do the same.</quote> Jeff had also asked if there were any other
meta-files he should be aware of, other than the journal file itself, and
there followed what appeared to be some misunderstandings of ext3 from some
of its users:</p>

<p>Andreas replied to Jeff, <quote who="Andreas Dilger">The first 12 reserved
inodes at the start of an ext2 filesystem (with appropriate data, if
applicable) are also required for ext3.</quote> But Stephen said simply,
there were no other meta-files. Near by, Riley had said, <quote who="Riley
Williams">I believe ext3 requires that the journal file occupies 12k (three
4k memory pages) of CONSECUTIVE disk space, and your conversion would need
to locate and allocate that for ext3 conversion to work.</quote> But Stephen
replied, somewhat alarmed, <quote who="Stephen C. Tweedie">No. I've no idea
where you got that idea from! 12k isn't a special size at all to journaling.
The journal will work more efficiently if it is contiguous, but you can make
it any size you want, anywhere on the disk. It should be at least 1024
blocks long.</quote></p>

</section>

<section
  title="Proposed Scheduler Changes"
  subject="[PATCH] proposed scheduler enhancements and fixes"
  archive=""
  posts="26"
  startdate="25 Feb 2000 00:00:00 -0800"
  enddate="03 Mar 2000 00:00:00 -0800"
>
<topic>Assembly</topic>

<p>Dimitris Michailidis posted a patch to the process scheduler. One of his
changes, he described, <quote who="Dimitris Michailidis">adds a new
scheduling policy SCHED_IDLE. Processes of this type run on CPUs that would
otherwise be idle. Useful for apps like SETI@Home, code crackers, etc.
Implementation of this feature is extremely lightweight. Among the
scheduling functions only schedule() is SCHED_IDLE-aware and the overhead
for non-idle CPUs is at most 1 instruction per schedule()
invocation.</quote> Linus Torvalds rejected the patch, and explained:</p>

<quote who="Linus Torvalds">

<p>So why do you think your implementation of this doesn't
have the deadlock that every other implementation has?</p>

<p>The deadlock is due to priority inversion, where a "idle-priority" task gets
a resource (say the directory semaphore), goes to sleep, and never wakes up
again because there is some slightly more important process running all the
time.</p>

<p>In short, this has been tried before, and it has ALWAYS been a serious
security holw full of denial-of-service kind of attacks.</p>

<p>Not applied</p>

</quote>

<p>Pavel Machek digressed historically, <quote who="Pavel Machek">Once upon a
time, there was trick which enabled slow for SCHED_IDLE processes (by
abusing flags -- something like PTRACE), then did priority boost in slow
path. I even remember it made fast path slightly faster by assembly level
optimalization. Unfortunately, that clever trick is not present in this
sched patch.</quote> Artur Skawina replied, <quote who="Artur Skawina">if
you're referring to my sched_idle hack, then it's still exists, but never
really made it past the proof of concept stage. [somebody else was
interested in maintaining it though]. Anyway, even w/o any special handling,
the deadlock is no worse than the SCHED_OTHER vs SCHED_{RR,FIFO} one; it's
just that it's more likely to get triggered in a typical setup. I will
probably be dropping the ptrace hack anyway, as it may prevent some kernel
entry optimizations. you should be able to work around the deadlock by
having a kernel thread periodically check the thread queue and raise the
idle threads priority temporarily. [you'll need a thread anyway for
reasonable signal handling] The current scheduler doesn't really support
many static priorities so that any sched_idle solution will be a hack. [and
this is good, a more complex scheduler would create more problems than it
would solve].</quote></p>

</section>

<section
  title="Suggestion: /proc/nzombie Zombie Counter"
  subject="/proc/nzombies"
  archive=""
  posts="38"
  startdate="26 Feb 2000 00:00:00 -0800"
  enddate="03 Mar 2000 00:00:00 -0800"
>
<topic>SMP</topic>

<mention>Mike A. Harris</mention>

<p>Jos Visser proposed a trivial change to exit.c, to create '/proc/nzombies',
a file to contain the current number of zombie processes on the system. Mike
A. Harris replied that instead of this, the thing to do was send fixes to
the maintainers of zombifying programs. Assuming the apps were Open Source,
he felt most fixes would be simple one-liners. Jos replied, <quote who="Jos
Visser">Before I can fix the problem, or pound on the vendor, I have to be
aware that the problem exists. I need automated system monitoring for that,
and the system monitors must have a quick and efficient way to get at the
information.</quote> Mike took the point and agreed that something was
needed, perhaps even an in-kernel feature, but he felt it would bloat the
mainstream kernel, and should only be maintained as an outside patch. But
Ricky Beam protested, <quote who="Ricky Beam">"bloat"? It's two lines of
code in the process exit path. That adds, what, four cpu cylces to process
termination? That's not bloat. The price of tracking process zombies in the
kernel is far, far less than tracking it in user land. I see no reason why
this shouldn't be added as a configurable feature. If you don't want it or
need it, then don't compile it in.</quote> Mike tested the patch, and
decided that it didn't unnecessarily bloat the kernel at all. He put in his
vote for including it in the official sources. But Walter Hofmann objected:</p>

<quote who="Walter Hofmann">

<p>It certainly is bloat.</p>

<p>The process exit path is critical--it is called often and every cycle is
important. Take a webserver: It can fork a process per request. Consider an
SMP system: If you write to the same counter repeatedly with all CPUs you
will get cache ping-pong effects which slow you down severely. All these
things have to be considered.</p>

<p>OTOH, counting zombies can be easily done in user space. A monitoring tool
doesn't need to do it more often than, say, once per minute. If it needs to
scan all processes for other purposes as well then counting zombies is
nearly free.</p>

</quote>

<p>Jos replied that calling the feature "bloat" was an exaggeration, because,
<quote who="Jos Visser">If I do a zombie count in userland every 5 minutes,
the number of cycles this is going to burn is tremendously larger than
performing the count inline in exit().</quote> Alan Cox replied, <quote
who="Alan Cox">However that doesnt interfere with the 99.9999999999999% of
the rest of us who don't give two hoots about your zombie count, putting it
in a mainstream kernel does.</quote> And Albert D. Cahalan added, <quote
who="Albert D. Cahalan">Normal systems don't have such a high zombie
population, or maybe you are just less tolerant of a few zombies. Millions
of Linux users would have to spend CPU time so that you can more quickly
count zombies.</quote></p>

<p>There was a bit more discussion, and then elsewhere Jos posted his
summary:</p>

<quote who="Jos Visser">

<p>Jos Visser (that's me) proposed to put a
configurable option in the kernel to count the number of zombies in the
system and export that information through a file in /proc (/proc/nzombies).
The underlying reason was to make this particular system information quickly
available to applications that want to monitor the system's health.</p>

<p>Some people objected to this because it would "bloat" exit() with an inc++
and release() with a dec--. I think that calling this "bloat" in an era
where web servers are sinking from userland into the kernel is stretching it
a wee bit (however, others disagree with me here). Furthermore I would
suggest that since it is (would be) configurable, everybody can choose
whether or not to incur this penalty.</p>

<p>Other people suggested various ways to perform the zombie count in shell
script. My whole point in posting the /proc/nzombies suggestion in the first
place was that the kernel is uniquely placed to perform this count not only
factors, but whole magnitudes, more efficiently. It's not just a case of
moving code from userland to the kernel, it's doing it in the kernel because
there I can solve this particular problem in a way I can nowhere else in the
system.</p>

<p>Then, would it be fair to slow down exit() for a feature that will not be
used by the majority of users? Again, if it's configurable, anyone can make
their own choices. On the other hand, if these type of very minor pieces of
functionality would start being configurable options, the number of
CONFIG_xx options would probably soon go through the roof! However, this
would probably not be the first function the kernel contains that is geared
toward a particular type of user/usage.</p>

<p>Many people questioned why I would care, and why I couldn't just patch the
zombie generating software in the first place. My answer there is that in my
experience in implementing system monitoring for various types of Unix
systems over the years have led me to making the zombie check a "default"
thing to be monitored for. You just would not believe some of the (closed
source) software one comes across. Changing or dumping the software at fault
is usually not acceptable for business reasons.</p>

<p>One (interesting) comment was that the feature was not general enough, and
should maybe be changed into a feature to obtain the entire process table
quickly and efficiently from a userland program, thereby solving a bunch of
other problems as well. I find that an interesting approach, and one that
I'll ponder on for some time. Would this be "bloat" as well? Who
knows.....?</p>

</quote>

<p>Alan encouraged, <quote who="Alan Cox">Remember also - if the nzombies patch
is useful to you and it works, this is free software - make it available.
The fact its not relevant for the main kernel stream doesnt mean its not
worth havign a patch out there - some day someone will be glad of
it,</quote> and to the more general process-table feature, he went on,
<quote who="Alan Cox">Being able to yank the table fast is much more generic
than the zombie thing so yes I think it would be far more useful.</quote>
And Frank v Waveren added his support, with, <quote who="Frank v Waveren">I
think that's be a great idea. So many programs try to get all this info,
that having one big proc-file with it (Though this shouldn't replace
/proc/pid, not even in the long run imo) would be a worthwile idea.</quote></p>

</section>

<section
  title="C Compiler Saga Continues"
  subject="3Com support broken in 2.3.47"
  archive=""
  posts="9"
  startdate="26 Feb 2000 00:00:00 -0800"
  enddate="01 Mar 2000 00:00:00 -0800"
>
<topic>Networking</topic>

<mention>Linus Torvalds</mention>

<p>This was first covered in <kcref subject="Official kernel stance on
EGCS?" startdate="08 Jan 1999 00:00:00 -0800"></kcref><!--
kt19990114_1.html#5 -->, where 'egcs' was still unreliable. 'egcs' seemed
satisfactory in <kcref subject="glibc-2.1 upgrade headaches. Any ideas??"
startdate="06 Mar 1999 00:00:00 -0800"></kcref><!-- kt19990318_10.html#4
-->, but by <kcref subject="Linux-2.2.5 - and a vacation" startdate="29 Mar 1999 00:00:00 -0800"></kcref><!-- kt19990408_13.html#10 --> it looked as
though there were still problems after all. By <kcref subject="Still no ISDN
connection :(" startdate="04 Apr 1999 00:00:00 -0800"></kcref><!--
kt19990415_14.html#4 -->, it looked as though true compatibility might be
far off. In <kcref subject="Problem with 2.3.1 and later." startdate="16 May 1999 00:00:00 -0800"></kcref><!-- kt19990520_19.html#16 -->, 'egcs' was a
common tool in two systems that failed to compile, and by <kcref
subject="linux-2.3.4pre1: Adjustments for using gcc builtins" startdate="27 May 1999 23:00:00 -0800"></kcref><!-- kt19990610_22.html#6 --> Linus
Torvalds was saying that the 'egcs' team was heading in the wrong direction,
by forcing too great an adherence to standard C. In <kcref subject="what
libc+compiler is in use for development?" startdate="18 Jul 1999 00:00:00 -0800"></kcref><!-- kt19990729_29.html#3 -->, it was pointed out that a
number of distributions compiled their kernels with 'egcs'. There were
optimistic predictions that 'gcc' 2.95 would be out soon and would solve all
problems. Then in <kcref subject="Kernels do not compile anymore"
startdate="13 Dec 1999 00:00:00 -0800"></kcref><!-- kt19991227_48.html#6 -->
it was revealed that Alan Cox used 'egcs' 1.1.2 for his compiles.</p>

<p>This time, in the course of discussion, Alan Cox said, <quote who="Alan
Cox">we believe egcs 1.1.x and gcc 2.7.2 are both totally solid compilers
for the kernel but gcc 2.95 is tripping kernel asm errors and stuff
still.</quote></p>

</section>

<section
  title="Legacy And Modern Bloat In BSS Data Initialization"
  subject="[PATCH 2.3.48] initrd fix (Mike Galbraith)"
  archive=""
  posts="19"
  startdate="27 Feb 2000 00:00:00 -0800"
  enddate="29 Feb 2000 00:00:00 -0800"
>

<mention>Russell King</mention>
<mention>Daniel Phillips</mention>

<p>Frank Bernard posted a patch, and Russell King noticed that some variables
were being explicitly initialized to 0, even though they were in the BSS
(Block Started by Symbol) data segment, which is zeroed to begin with.
Unnecessarily initializing the variables would tend to make kernel binaries
larger, he pointed out. Alan Cox explained, <quote who="Alan Cox">Long long
ago (before 1.0) the kernel didnt zero the BSS. Some legacy of that survives
in old assignments.</quote> Daniel Phillips added that one benefit of
explicitly initializing variables was to prevent compiler warnings; but
Matthias Urlichs specified, <quote who="Matthias Urlichs">We're talking
about variables outside of functions here. They're zeroed out by the BSS
init code, and the C compiler knows that.</quote> Russel also replied to
Alan, pointing out that he was referring to new explicit initializations
he'd seen in the patch, not legacy ones.</p>

</section>

<section
  title="ACPI Vs. APM"
  subject="APM_power_off"
  archive=""
  posts="23"
  startdate="28 Feb 2000 00:00:00 -0800"
  enddate="02 Mar 2000 00:00:00 -0800"
>
<topic>FS: sysfs</topic>
<topic>Power Management: ACPI</topic>

<mention>Jamie Lokier</mention>

<p>Lars Vahlen was trying to get 'power off on shutdown' working on his Athlon
500/Microstar 6167 with 2.3.47, without success. Jeff Garzik said that APM
was outdated and should not be used. Instead, he recommended, <quote
who="Jeff Garzik">Download and install acpid, and enable CONFIG_ACPI.
Power-off on shutdown will work beautifully. Forget about APM, you shouldn't
use such an old technology on such a nice new machine ;-)</quote> Jamie
Lokier was surprised by this advice, and pointed out that as recently as
2.3.40, acpid had seemed virtually useless. Jeff replied, <quote who="Jeff
Garzik">Hacking has definitely occurred since then. Power-off and idle
(power save) work fine for me, both on my desktop K6 and my laptop K6. I
haven't tested suspend... maybe you would be up to grabbing the latest
kernel and acpid, and testing suspend and resume?</quote></p>

<p>Elsewhere, Daniel Egger perplexedly requested, <quote who="Daniel Egger">How
can I use ACPI in real life at the moment? It seems like it's just a
playground for developers but on the other side if it's enabled in the
kernel APM automatically gets overridden, so laptop users would be rather
silly to activate ACPI at the moment because the system will empty the
battery really fast.</quote> But Andy Henroid replied:</p>

<quote who="Andy Henroid">

<p>Actually, if you are running acpid, you'll get a
fair amount of power savings from ACPI C-states (low power when the system
is idle, like an improved "hlt") So, no, you definitely will not be draining
the battery any faster than if you were using APM.</p>

<p>The issue with ACPI support right now is that you don't get battery status
or suspend capability. The former is fairly easy to do and is coming along
soon in acpid. The later requires signficant changes to drivers and probably
the kernel and is going to take a bit.</p>

</quote>

<p>Daniel reported apparent success, but he didn't think he'd performed an
accurate test. He asked how to identify broken ACPI implementations. Andy
replied that he'd update the ACPI documentation to provide real tests, and
explained:</p>

<quote who="Andy Henroid">

<p>You can verify that C-states work by running acpid
and looking for "ACPI Cx works" in the kernel log. (Note, this is if your
system has ACPI tables, otherwise you need to fill in C-state latency values
for /proc/sys/acpi/p_lvlX_lat. Sorry, this should probably go in the
documentation somewhere)</p>

<p>A working S5 is verified by running acpid and do "shutdown -h now". Does you
system power-off? If not, S5 is not supported (check syslog) or S5 is
broken. (This will not work at all unless you have ACPI tables)</p>

<p>You can verify that ACPI events work by running acpid and pressing the power
button. Does the system start to shutdown?</p>

</quote>

<p>Daniel tried these tests without much success, and went back to APM. EOT.</p>

</section>

<section
  title="Some Discussion Of Kernel Multitasking And Scalability"
  subject="Linux kernerl preemptive ??"
  archive=""
  posts="9"
  startdate="29 Feb 2000 00:00:00 -0800"
  enddate="06 Mar 2000 00:00:00 -0800"
>
<topic>SMP</topic>
<topic>Version Control</topic>

<mention>Larry McVoy</mention>

<p>Aneesh Kumar had several questions. He asked whether the kernel did
pre-emptive multitasking, whether the kernel was re-entrant, and whether it
supported more than one CPU. Matti Aarnio replied, <quote who="Matti
Aarnio">SMP support is quite good, but the kernel isn't PRE-EMPTIVE in sense
that kernel thread X could be pre-empted by thread Y. Kernel threads can
YIELD (e.g. while doing some wait) to other processing until whatever they
are waiting for, they get it.</quote> Aneesh didn't quite understand this
answer. If the kernel could yield to some other process while waiting for a
resource, why was it not made pre-emptive to begin with? Also, did SMP have
anything to do with pre-emption? Matti replied at length to the former
question:</p>

<quote who="Matti Aarnio">

<p>
<ul>

<li>"SMP" = "Symmetric Multi Processing" (Or in case of Linux: "Symmetric
Multi Penguin" -- a joke)</li>

<li>Pre-emption is a thing where executing thread is involuntarily stopped
from doing whatever it was doing, and processor is given to another thread.
Linux kernel DOES NOT DO THAT INTERNALLY. Well, there is a sort of hierarchy
of pre-emptions:</li>

<p>
  <ul>

  <li>user threads (+ kernel threads for user syscalls)</li>

    <ul>

    <li>scheduling in between user threads</li>

    </ul>

  <li>interrupt processing</li>

  </ul>
</p>

<li>Only pre-emption what there is, does happen in between compute- bound
user processes when process' timeslice has completed.</li>

<li>Kernel threads can voluntarily YIELD their processor to other tasks by
means of waiting for some resource, or executing explicite schedule()
call.</li>

<li>As to why the kernel isn't made internally pre-emptive; doing such a
thing is *difficult*, very difficult. System would need to be rewritten to
allow internal execution stopped at any point, and having other
processors/threads trample on incomplete datasets at any point...
(Multiprocessor support requires sort of this behaviour anyway, and that is
why there are various spinlocks all over the place..)</li>

</ul>
</p>

</quote>

<p>Tuukka Toivonen also replied to Aneesh's query about why the kernel was not
written to be pre-emptive. Tuukka said, <quote who="Tuukka Toivonen">That
requires locking all data that is used, and _that_ means lower performance.
It means, of course, also somebody to write the code.</quote> And to
Aneesh's question about whether SMP had anything to do with pre-emption,
Tuukka replied:</p>

<quote who="Tuukka Toivonen">

<p>Well, yes in a way. While CPU#1 is running in kernel mode, it has acquired
locks that prevent CPU#2 from running in kernel mode too. Or rather, that
was the case with 2.0.0 kernel. This is called (very) coarse-granularity
locking.</p>

<p>In time it is supposed that the locking is tuned to more fine-granularity
locking. It means that some process running in kernel mode on CPU#1 has
locked only parts of the kernel, and other CPUs can use the all unlocked
parts freely, simultaneously. For example, with kernel 2.2.x it's much
better already. In practice this means that the kernel becomes more scalable
-- additional CPUs are used more effectively.</p>

<p>Now, one would suppose that fine-granularity locking is the goal. Many
commercial operating systems do that, eg. IRIX. It is supposed to give the
best scalability. However, this has a hit on performance especially on
systems with just one or two CPUs (like most PCs these days).</p>

<p>Some people (mainly Larry McVoy) have proposed that this shouldn't be done.
He has proposed another way how scalability should be achieved. But since
you didn't ask that, I stop my story here.</p>

</quote>

<p>He also gave an interesting pointer to a document on <a
href="http://www.cs.unc.edu/~dewan/242/s99/notes/trans/trans.html">Concurrency
Control</a>, by <a href="http://www.cs.unc.edu/~dewan/">Prasun Dewan</a>.</p>

<p>Alexey Zhuravlev asked for more information on Larry's alternative. Tuukka
recommended reading <a href="http://www.bitmover.com/llnl/smp.pdf">Larry's
PDF paper</a>, and replied:</p>

<quote who="Tuukka Toivonen">

<p>The main idea seems to be to duplicate the
kernel data structures in memory. For example, 32-way SMP system might have
8 copies of kernel data, each running as 4-way SMP system. This means that
the kernel copy A accessing its own data structures locks only its own data
-- kernel copies B, C, ... are not locked and can run at full speed.</p>

<p>This also means that the cache coherency is not necessary between different
copies of kernel.</p>

<p>The kernel copies would communicate via shared memory blocks. For example,
buffer cache might be shared.</p>

<p>As I have understood, Larry has mainly talked this kind of operating system
on dedicated hardware, like SGI Origin 2000. My own opinion is (please
correct me if I'm wrong) is that it might help on Intel-style (ie. shared
bus) too, but the problem with Intel style hardware is that the bus
saturates easily. Unlike on Origin 2000, which doesn't have a shared bus but
a kind of switch between nodes, of which each have several CPUs.</p>

</quote>

</section>

<section
  title="Spurious IRQ7"
  subject="2.3.49-1 --  Compilation error in traps.c in function `do_nmi'"
  archive=""
  posts="13"
  startdate="28 Feb 2000 00:00:00 -0800"
  enddate="02 Mar 2000 00:00:00 -0800"
>
<topic>Sound</topic>

<mention>Miles Lane</mention>

<p>Miles Lane was getting compilation errors in 'traps.c' in 2.3.49-1; and Ingo
Molnar posted a one line patch to include the 'asm/hardirq.h' header. Peter
Blomgren pointed out that the same thing was needed in 'io_apic.c', and
posted a similar patch. Miles reported success with Ingo's patch, but then
reported a different problem: he was seeing a "spurious 8259A interrupt:
IRQ7" error. He posted some system information, and Ingo replied, <quote
who="Ingo Molnar">i believe IRQ7 is a tad overloaded here. Do you see any
system instability when the spurious IRQ message appears? The parallel port
and the sound card are both using IRQ7. Plus IRQ7 is the IRQ for the
motherboard to report spurious interrupts (it's a bit more complex than this
but thats the gist of it).</quote> He added that he didn't know why this
would be happening now, and not with earlier kernels.</p>

<p>Miles moved the mapping for the MPU-401 interrupt to IRQ 10 to ease the
overload, and reported instability in the form of an xfree86 3.9.18 crash.
'dmesg' gave two new messages: "spurious 8259A interrupt: IRQ7" and
"keyboard: Timeout - AT keyboard not present?" Linus Torvalds replied:</p>

<quote who="Linus Torvalds">

<p>The spurious 8259A interrupt is probably just because
there is a driver that had some timing whereby it made its own interrupt go
away without it having ever been acknowledged by the CPU - so the 8259A had
had time to raise it, but by the time the CPU got along to servicing it it
wasn't there any more and the i8259 gives us the spurious 7 instead.</p>

<p>A spurious irq7 is not necessarily a sign of anything really bad
happening..</p>

<p>The keyboard thing makes me more worried. My current suspicion would be that
somehow a edge-triggered interrupt is just lost due to some magic timing
issues, and it stays lost forever because we don't touch the keyboard
controller unless it asks us to look at it.</p>

<p>So putting the two theories would be that it's the _keyboard_ interrupt that
the driver just made go away, and because it wasn't handled the machine is
now dead forever as far as the keyboard is concerned.</p>

<p>When we read the keyboard status or data ports enough to make the controller
think we handled the interrupt, but not enough to realize that there isn't
anything more to read, then..</p>

<p>The simple solution to this may be just a timeout - having a timer that
checks the keyboard every few seconds and does a "handle_kbd_event()"
whether an interrupt came in or not.</p>

</quote>

</section>

<section
  title="New Linux Console Project"
  subject="[ANNOUNCE] linux console project"
  archive=""
  posts="1"
  startdate="29 Feb 2000 00:00:00 -0800"
  enddate="29 Feb 2000 00:00:00 -0800"
>

<p>Continuing from the discussion covered last issue in <kcref subject="Linux
console driver maintainer?" startdate="24 Feb 2000 00:00:00 -0800"></kcref><!--
kt20000306_57.html#13 -->, James Simmons announced:</p>

<quote who="James Simmons">

<p>Due to demand. I have started the linux console
project. The goal is to design a new multihead console system for linux. I
hope to have it ready to be ported right into the 2.5.X kernels. I see alot
of people have worked on new and different ideas for a console system. I
would like to see this project be the center where people can display their
ideas and code. In the hope is to merge everyones efforts and develope a
lean and yet powerful multihead console system.</p>

<p>The web site is <a
href="http://sourceforge.net/mail/?group_id=3063">http://sourceforge.net/mail/?group_id=3063</a></p>

<p>I also have a <a
href="http://linuxconsole.sourceforge.net">http://linuxconsole.sourceforge.net</a>
domain but haven't yet linked the two pages together. What I need is someone
to work on the web pages. I also need developers of course.</p>

<p>Their is a mailing list already. Just go to <a
href="http://sourceforge.net/mail/?group_id=3063">http://sourceforge.net/mail/?group_id=3063</a>
and select the mailing list section. From tehri you can subscribe via the
web. Have fun :)</p>

</quote>

<p>There was no reply.</p>

</section>

<section
  title="New Pipe Code"
  subject="[PATCH,BETA] new pipe code"
  archive=""
  posts="14"
  startdate="29 Feb 2000 00:00:00 -0800"
  enddate="06 Mar 2000 00:00:00 -0800"
>
<topic>POSIX</topic>

<p>Manfred Spraul reported, <quote who="Manfred Spraul">I've rewritten the pipe
code: the old code caused lots of reschedules under certain loads. The new
code is not yet fully tested (esp. O_NONBLOCK is untested), but I'm really
interested what you think about it.</quote> Richard Guenther requested,
<quote who="Richard Guenther">Can you add a hook to tune the write buffer
size per pipe? (with an fcntl or the like) It would be really useful to me
to allow write-throttling without hacks like I do now (writing 64 times
garbage for each written datum - I'm passing just pointers between threads
in a FIFO manner, each pointer has lots of storage attached to it, so write
throttling is essential to allow thread switching every few megs of data).
Or do you know another way to throttle writes to a pipe?</quote> But Manfred
objected, <quote who="Manfred Spraul">Unfortunately, Linux guarantees that
it can send 4096 bytes in one atomic operation, and such an fcntl could
violate that.</quote> But Alan Cox pointed out, <quote who="Alan Cox">The
requirement for atomicity comes from the POSIX and Unix API. Nothing in the
API prohibits changing the size by calls not in the API. I think its silly
to add stuff like that however. Pipe is optimised for pure speed, AF_UNIX
sockets can do the variable buffering already</quote> Richard replied that
he couldn't find anything about this in the manpages, and asked for some
pointers to docs. He added, <quote who="Richard Guenther">If unix sockets
allow blocking write after a specifiable amount of data written (and not yet
read) this would be really cool.</quote> And Alan concluded, <quote
who="Alan Cox">You can sort of get the result you want with the
SO_SNDBUF/SO_RCVBUF socket options. But those are armwaving general controls
not precise ones. If you want to get message boundaries and precise control
I think it ends up being a user space + datagram socket job</quote></p>

<p>Elsewhere, under the Subject: <a href="">[patch] updates for the pipe
code</a>, Manfred reported a race in his initial code: <quote who="Manfred
Spraul">if 2 threads read and write to a pipe concurrently, then wake-up's
could get lost. I forgot to check PIPE_LEN after I reacquired
PIPE_LOCK.</quote> He posted a new patch, and there was some discussion</p>

</section>

<section
  title="No WAP For Linux?"
  subject="WAP for Linux"
  archive=""
  posts="3"
  startdate="04 Mar 2000 00:00:00 -0800"
  enddate="04 Mar 2000 00:00:00 -0800"
>
<topic>Patents</topic>

<mention>Linus Torvalds</mention>

<p>Chetan Sakhardande asked if a WAP (Wireless Application Protocol) suite
existed or was under development for Linux. Alan Cox and Linus Torvalds gave
the only two replies. Linus gave pointers to <a
href="http://www.kannel.org">Kannel: Open Source WAP and SMS gateway</a> and
<a href="http://www.wapit.fi">WapIT Ltd As a Company</a>, and Alan
explained:</p>

<quote who="Alan Cox">

<p>At least in the USA the patent requirements and
royalties make it impractical to do WAP clients. Apache can be told the wap
mime types but remember if you are operating the server in the USA you may
need to pay about $10K/year to run your server.</p>

<p>Either way WAP is user space so outside of the kernel issues. There are one
or two people working on simple WAP tools in europe, and its possible that
Mozilla will support WAP although I guess the patents killed that</p>

</quote>

<p>EOT.</p>

</section>

</kc>
