<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="52" date="24 Jan 2000 00:00:00 -0800" />

<intro>

<p>A very big thanks goes to Martin Stromberg for pointing out that in last
week's <kcref subject="swapping via nfs..."
startdate="04 Jan 2000 00:00:00 -0800"></kcref><!-- kt20000117_51.html#4 -->, swapping via
NFS uses a file, not a partition. Sorry for the misinformation.</p>

<p>Thanks also go to Mads Kiilerich for suggesting that the link to the latest
KT and KC issues should redirect to their permanent locations. That's been
done.</p>

</intro>

<stats posts="1241" size="5483" contrib="451" multiples="207" lastweek="177">

<person posts="65" size="186" who="Alan Cox " />
<person posts="39" size="133" who="Tigran Aivazian " />
<person posts="31" size="108" who="Andrea Arcangeli " />
<person posts="26" size="125" who="Alexander Viro " />
<person posts="19" size="86" who="Andre Hedrick " />
<person posts="18" size="62" who="Keith Owens " />
<person posts="16" size="69" who="Richard B. Johnson " />
<person posts="16" size="54" who="Robert Dinse " />
<person posts="15" size="50" who="Jamie Lokier " />
<person posts="14" size="54" who="Linus Torvalds " />
<person posts="14" size="52" who="Guest section DW " />
<person posts="14" size="51" who="Khimenko Victor " />
<person posts="13" size="49" who="Erik Andersen " />
<person posts="12" size="80" who=" (Kanoj Sarcar)" />
<person posts="12" size="59" who=" (david parsons)" />
<person posts="12" size="48" who="Horst von Brand " />
<person posts="10" size="34" who="Jens Axboe " />
<person posts="9" size="37" who="Bill Wendling " />
<person posts="9" size="33" who="Rik van Riel " />
<person posts="9" size="31" who="Matthias Andree " />
<person posts="9" size="26" who="Petko Manolov " />
<person posts="8" size="31" who="Sean Hunter " />
<person posts="8" size="27" who="Horst von Brand " />
<person posts="8" size="21" who="David S. Miller " />
<person posts="7" size="34" who="Chris Wing " />
<person posts="7" size="28" who="" />
<person posts="7" size="27" who="Hans Reiser " />
<person posts="7" size="25" who="Chuck Lever " />
<person posts="7" size="25" who="Ingo Molnar " />
<person posts="7" size="25" who="Thomas Speck " />
<person posts="7" size="24" who="Dominik Kubla " />
<person posts="7" size="21" who="Wakko Warner " />
<person posts="7" size="20" who="Chip Salzenberg " />
<person posts="7" size="20" who="Manfred Spraul " />
<person posts="7" size="19" who="Matthew Wilcox " />
<person posts="7" size="18" who="" />
<person posts="6" size="55" who="Christoph Rohland " />
<person posts="6" size="30" who="Andreas Dilger " />
<person posts="6" size="28" who="Martin Dalecki " />
<person posts="6" size="26" who="Mike A. Harris " />
<person posts="6" size="25" who="Martin Mares " />
<person posts="6" size="25" who="Ananth Ananthanarayanan " />
<person posts="6" size="22" who="David Woodhouse " />
<person posts="6" size="22" who="Jesse Pollard " />
<person posts="6" size="21" who="Alex Holden " />
<person posts="6" size="21" who="Tigran Aivazian " />
<person posts="6" size="20" who="Andi Kleen " />
<person posts="6" size="19" who="Peter Tufvesson " />
<person posts="6" size="17" who="Peter Samuelson " />
<person posts="5" size="29" who="Jakub Jelinek " />
<person posts="5" size="26" who="Jeff Garzik " />
<person posts="5" size="24" who="Stephen C. Tweedie " />
<person posts="5" size="18" who="Frank Bernard " />
<person posts="5" size="18" who="Pedro M. Rodrigues " />
<person posts="5" size="17" who="Pavel Machek " />
<person posts="5" size="17" who="Manfred Spraul " />
<person posts="5" size="17" who="Helge Hafting " />
<person posts="5" size="16" who="David Grothe " />
<person posts="5" size="15" who="Philip Blundell " />
<person posts="5" size="15" who="Krzysztof Halasa " />
<person posts="5" size="14" who="Matthew Kirkwood " />
<person posts="4" size="75" who="Mike Phillips " />
<person posts="4" size="30" who="Frodo Looijaard " />
<person posts="4" size="26" who="David Madore " />
<person posts="4" size="18" who="" />
<person posts="4" size="17" who="Simon Kirby " />
<person posts="4" size="15" who="Mike Galbraith " />
<person posts="4" size="15" who="Mikulas Patocka " />
<person posts="4" size="15" who="James Manning " />
<person posts="4" size="15" who="Niels Kristian Bech Jensen " />
<person posts="4" size="14" who="David Schwartz " />
<person posts="4" size="14" who="Joe Cooper " />
<person posts="4" size="14" who="Richard Guenther " />
<person posts="4" size="14" who="Bas Mevissen " />
<person posts="4" size="13" who=" (Linus Torvalds)" />
<person posts="4" size="13" who=" (Davide Libenzi)" />
<person posts="4" size="13" who="Theodore Y. Ts'o " />
<person posts="4" size="13" who="Stephen Satchell " />
<person posts="4" size="13" who="David Weinehall " />
<person posts="4" size="13" who="Mark van Walraven " />
<person posts="4" size="12" who=" (Miquel van Smoorenburg)" />
<person posts="4" size="12" who="Folkert van Heusden " />
<person posts="3" size="394" who="Christopher W. Fisher " />
<person posts="3" size="41" who="Ph. Marek " />
<person posts="3" size="25" who="" />
<person posts="3" size="21" who="Patrick Lerda " />
<person posts="3" size="17" who="Brian Gerst " />
<person posts="3" size="15" who="James A Simmons " />
<person posts="3" size="15" who="Jean-Luc Coulon " />
<person posts="3" size="14" who="Hans de Goede " />
<person posts="3" size="13" who="Zack Weinberg " />
<person posts="3" size="12" who="Christopher J. Reimer " />
<person posts="3" size="12" who="Harald Koenig " />
<person posts="3" size="12" who="Marc Mutz " />
<person posts="3" size="12" who="Scott A. Sibert " />
<person posts="3" size="12" who="Marc Lehmann " />
<person posts="3" size="11" who="David L. Parsley (lkml account) " />
<person posts="3" size="11" who="Pauline Middelink " />
<person posts="3" size="11" who="Oliver Xymoron " />
<person posts="3" size="11" who="Martijn van Oosterhout " />
<person posts="3" size="11" who="Avery Pennarun " />
<person posts="3" size="11" who=" (Kai Henningsen)" />
<person posts="3" size="10" who="Henning P. Schmiedehausen " />
<person posts="3" size="10" who="" />
<person posts="3" size="10" who="Sam Webster " />
<person posts="3" size="10" who="Marcus Sundberg " />
<person posts="3" size="10" who="Philip Blundell " />
<person posts="3" size="10" who="Geert Uytterhoeven " />
<person posts="3" size="10" who="Olaf Titz " />
<person posts="3" size="10" who="Daniel R. Kegel " />
<person posts="3" size="10" who="Richard A Nelson " />
<person posts="3" size="9" who="Tom Leete " />
<person posts="3" size="9" who="david parsons " />
<person posts="3" size="9" who="Vojtech Pavlik " />
<person posts="3" size="9" who="Alexandre Hautequest " />
<person posts="3" size="8" who="Marc SCHAEFER " />
<person posts="3" size="8" who="Richard Henderson " />
<person posts="2" size="38" who="Matthew Grant " />
<person posts="2" size="35" who="M Sweger " />
<person posts="2" size="35" who="Peter Rival " />
<person posts="2" size="23" who="James Bourne " />
<person posts="2" size="17" who="Leeuw van der, Tim " />
<person posts="2" size="16" who="Sebastian " />
<person posts="2" size="15" who=" (Lord Apollyon)" />
<person posts="2" size="14" who="Vladimir Ivaschenko " />
<person posts="2" size="12" who="manfreds " />
<person posts="2" size="12" who="Vladimir Dergachev " />
<person posts="2" size="12" who="Keith Adams " />
<person posts="2" size="11" who="Marcin Dalecki " />
<person posts="2" size="11" who=" (Patrick J. LoPresti)" />
<person posts="2" size="10" who="Peter Hunter " />
<person posts="2" size="10" who="Bruce J.A. Nourish " />
<person posts="2" size="10" who="Richard Guy Briggs " />
<person posts="2" size="9" who="Brandon S. Allbery KF8NH " />
<person posts="2" size="9" who="Daniel Zeaiter " />
<person posts="2" size="9" who="Michael H. Warfield " />
<person posts="2" size="9" who="" />
<person posts="2" size="8" who="" />
<person posts="2" size="8" who="Khimenko Victor " />
<person posts="2" size="8" who="Dave Higgen " />
<person posts="2" size="8" who="Peter K " />
<person posts="2" size="8" who="Ralf Nyren " />
<person posts="2" size="8" who="Thomas Molina " />
<person posts="2" size="8" who="" />
<person posts="2" size="8" who="The Lost Wizard " />
<person posts="2" size="8" who="Andrzej Krzysztofowicz " />
<person posts="2" size="7" who=" (H. Peter Anvin)" />
<person posts="2" size="7" who="Jamie Lokier " />
<person posts="2" size="7" who="Daniel Kobras " />
<person posts="2" size="7" who="Sasi Peter " />
<person posts="2" size="7" who="Jeff Dike " />
<person posts="2" size="7" who="Albert D. Cahalan " />
<person posts="2" size="7" who="Elmer Joandi " />
<person posts="2" size="7" who="Erik Mouw " />
<person posts="2" size="7" who="Bradley Wendelboe " />
<person posts="2" size="7" who="David Dyck " />
<person posts="2" size="7" who="Matthias Urlichs " />
<person posts="2" size="7" who="Richard Zidlicky " />
<person posts="2" size="7" who="Dunlap, Randy " />
<person posts="2" size="7" who="Brian May " />
<person posts="2" size="7" who="M.J. Galan " />
<person posts="2" size="6" who="Frank v Waveren " />
<person posts="2" size="6" who="Andreas Tobler " />
<person posts="2" size="6" who="Tim Waugh " />
<person posts="2" size="6" who="Mr. James W. Laferriere " />
<person posts="2" size="6" who="Domsalla, Thorsten " />
<person posts="2" size="6" who="Chris Evans " />
<person posts="2" size="6" who="Andreas Bombe " />
<person posts="2" size="6" who="JM Geremia " />
<person posts="2" size="6" who="Jim Nance " />
<person posts="2" size="6" who="Stanislav Malyshev " />
<person posts="2" size="6" who="V Ganesh " />
<person posts="2" size="6" who="" />
<person posts="2" size="6" who="Lincoln Dale " />
<person posts="2" size="6" who="Kristofer T. Karas " />
<person posts="2" size="6" who="Jes Sorensen " />
<person posts="2" size="6" who="Gaurav Yadav " />
<person posts="2" size="6" who="Ingo Oeser " />
<person posts="2" size="6" who="Abramo Bagnara " />
<person posts="2" size="6" who="Gregory Maxwell " />
<person posts="2" size="6" who="Dan Yocum " />
<person posts="2" size="6" who="Gerd Knorr " />
<person posts="2" size="6" who="Doug Ledford " />
<person posts="2" size="6" who="Rusty Russell " />
<person posts="2" size="6" who="Pavel Machek " />
<person posts="2" size="6" who="Julian Anastasov " />
<person posts="2" size="6" who="" />
<person posts="2" size="6" who="=?iso-8859-1?Q?Jimmy_M=E4kel=E4?= " />
<person posts="2" size="5" who="T V Govind " />
<person posts="2" size="5" who="Mark H. Wood " />
<person posts="2" size="5" who="David Balazic " />
<person posts="2" size="5" who="Damir Cosic " />
<person posts="2" size="5" who="Mark Hahn " />
<person posts="2" size="5" who="Peter Svensson " />
<person posts="2" size="5" who="amzhang " />
<person posts="2" size="5" who="Mike Porter " />
<person posts="2" size="5" who="Garst R. Reese " />
<person posts="2" size="5" who="Mark Lord " />
<person posts="2" size="5" who="Paul Flinders " />
<person posts="2" size="5" who="Sam Gendler " />
<person posts="2" size="5" who="Sven Bergner " />
<person posts="2" size="5" who="Alex Buell " />
<person posts="2" size="5" who="Brion Vibber " />
<person posts="2" size="5" who="Syed Khader Vali " />
<person posts="2" size="5" who="Dan Hollis " />
<person posts="2" size="4" who="Thomas Peuss " />
<person posts="2" size="4" who="Michael J. Dikkema " />
<person posts="1" size="45" who="Peter Moulder " />
<person posts="1" size="33" who="Nick Rasmussen " />
<person posts="1" size="32" who="Bernard Wei " />
<person posts="1" size="24" who="Kevin O'Connor " />
<person posts="1" size="23" who="Ward Vandewege " />
<person posts="1" size="13" who="Adrian Bunk " />
<person posts="1" size="11" who="Barry Treahy " />
<person posts="1" size="11" who="Pierfrancesco Caci " />
<person posts="1" size="10" who="Cyril Bortolato " />
<person posts="1" size="10" who="Ingo Molnar " />
<person posts="1" size="8" who="Scott Thomson " />
<person posts="1" size="8" who="David Lang " />
<person posts="1" size="8" who="Richard Gooch " />
<person posts="1" size="7" who="Lars Marowsky-Bree " />
<person posts="1" size="7" who="Markus Hennig " />
<person posts="1" size="7" who="Bill Royal " />
<person posts="1" size="7" who="Sebastian Andersson " />
<person posts="1" size="7" who="Admin Mailing Lists " />
<person posts="1" size="7" who="Ulrich Windl " />
<person posts="1" size="7" who="Kieran " />
<person posts="1" size="6" who="Towers, Tim (London) " />
<person posts="1" size="6" who="Peter Denison " />
<person posts="1" size="6" who="David Aronchick " />
<person posts="1" size="6" who="Michael Vogt " />
<person posts="1" size="6" who="Florian Lohoff " />
<person posts="1" size="6" who="Yngvi " />
<person posts="1" size="6" who="Tim Walberg " />
<person posts="1" size="5" who="Peter Enderborg " />
<person posts="1" size="5" who="marc clark " />
<person posts="1" size="5" who="Jeff McNeil " />
<person posts="1" size="5" who="Pug Fantus " />
<person posts="1" size="5" who="Matthew Hanselman " />
<person posts="1" size="5" who="Mark Hagger " />
<person posts="1" size="5" who="Evan Langlois " />
<person posts="1" size="5" who="Sam Webster " />
<person posts="1" size="5" who="Dirk Harms-Merbitz " />
<person posts="1" size="5" who="Robert Forsman " />
<person posts="1" size="5" who="David Hinds " />
<person posts="1" size="5" who="Gregoire FAVRE " />
<person posts="1" size="5" who="Bear Giles " />
<person posts="1" size="4" who="Chris Noe " />
<person posts="1" size="4" who="Dr Chris Richardson " />
<person posts="1" size="4" who="Linux Developer " />
<person posts="1" size="4" who="Larry Woodman " />
<person posts="1" size="4" who="Artur Skawina " />
<person posts="1" size="4" who="=?ISO-8859-1?Q?" />
<person posts="1" size="4" who="Matti Aarnio " />
<person posts="1" size="4" who="Jan-Simon Pendry " />
<person posts="1" size="4" who="David Edwards " />
<person posts="1" size="4" who=" (David Madore)" />
<person posts="1" size="4" who="Hubert Tonneau " />
<person posts="1" size="4" who="Magnus Sjoegren " />
<person posts="1" size="4" who="Adam C Powell IV " />
<person posts="1" size="4" who="Mike Coleman " />
<person posts="1" size="4" who="Terry Katz " />
<person posts="1" size="4" who="Benjamin C.R. LaHaise " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="Giuliano Pochini " />
<person posts="1" size="4" who="jamal " />
<person posts="1" size="4" who=" (Steven S. Dick)" />
<person posts="1" size="4" who="kees " />
<person posts="1" size="4" who="Johannes Kloos " />
<person posts="1" size="4" who="Martin Sarrionandia " />
<person posts="1" size="4" who="Karsten Keil " />
<person posts="1" size="4" who="Douglas Gilbert " />
<person posts="1" size="3" who="Miguel Freitas " />
<person posts="1" size="3" who="Erik Corry " />
<person posts="1" size="3" who=" (Bob_Tracy)" />
<person posts="1" size="3" who="Lars Marowsky-Bree " />
<person posts="1" size="3" who="Matthias Schniedermeyer " />
<person posts="1" size="3" who="Lord Satanus of Acheron " />
<person posts="1" size="3" who="Dan Michael " />
<person posts="1" size="3" who="Dale Amon " />
<person posts="1" size="3" who="Kurt Garloff " />
<person posts="1" size="3" who="Nicholas Mc Guire " />
<person posts="1" size="3" who="Todd " />
<person posts="1" size="3" who="Vikram " />
<person posts="1" size="3" who="Michael Mess " />
<person posts="1" size="3" who="Andreas Schwab " />
<person posts="1" size="3" who="Matthew Dharm " />
<person posts="1" size="3" who="Innersonic Media " />
<person posts="1" size="3" who="Todd Larason " />
<person posts="1" size="3" who="Adam Fritzler " />
<person posts="1" size="3" who="Savochkin Andrey Vladimirovich " />
<person posts="1" size="3" who=" (Tom Crane)" />
<person posts="1" size="3" who="Sebastian Krahmer " />
<person posts="1" size="3" who="Andreas Jaeger " />
<person posts="1" size="3" who="=?iso-8859-1?q?willy=20tarreau?= " />
<person posts="1" size="3" who="Jeff Millar " />
<person posts="1" size="3" who="Lee Mitchell " />
<person posts="1" size="3" who="Jesse Jackson " />
<person posts="1" size="3" who="Larry Sendlosky " />
<person posts="1" size="3" who="Mohammad DAMT " />
<person posts="1" size="3" who="Michael Merhej " />
<person posts="1" size="3" who="jeng " />
<person posts="1" size="3" who="Hank Leininger " />
<person posts="1" size="3" who="Adrian Bridgett " />
<person posts="1" size="3" who="Andrew Pam " />
<person posts="1" size="3" who=" (Dave Jones)" />
<person posts="1" size="3" who="Riley Williams " />
<person posts="1" size="3" who="Ralph Loader " />
<person posts="1" size="3" who="Andris Pavenis " />
<person posts="1" size="3" who="Mickael " />
<person posts="1" size="3" who="ursus " />
<person posts="1" size="3" who="Marc Duponcheel " />
<person posts="1" size="3" who="Martin Costabel " />
<person posts="1" size="3" who="Steffen Grunewald " />
<person posts="1" size="3" who="Kai Makisara " />
<person posts="1" size="3" who="Peter Daum " />
<person posts="1" size="3" who="Arnaud Gomes-do-Vale " />
<person posts="1" size="3" who="Albert Cranford " />
<person posts="1" size="3" who=" (Rogier Wolff)" />
<person posts="1" size="3" who="Wayne Pascoe " />
<person posts="1" size="3" who="Thomas Schenk " />
<person posts="1" size="3" who="Matthew Dharm " />
<person posts="1" size="3" who="Daniel Zeaiter " />
<person posts="1" size="3" who="Werner Almesberger " />
<person posts="1" size="3" who="Brian Hall " />
<person posts="1" size="3" who="=?iso-8859-1?Q?Taneli_V=E4h=E4kangas?= " />
<person posts="1" size="3" who="Kai Duebbert " />
<person posts="1" size="3" who="Larry McVoy " />
<person posts="1" size="3" who="Jim Garlick " />
<person posts="1" size="3" who=" (Arjan van de Ven)" />
<person posts="1" size="3" who="Alec Smith " />
<person posts="1" size="3" who=" (Marc MERLIN)" />
<person posts="1" size="3" who=" (Matthias Urlichs)" />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Andre Pang " />
<person posts="1" size="3" who="Magnus Danielson " />
<person posts="1" size="3" who=" (Stuart Lynne)" />
<person posts="1" size="3" who="Dax Kelson " />
<person posts="1" size="3" who="Sushil Agrawal " />
<person posts="1" size="3" who="Drizzt " />
<person posts="1" size="3" who="Marc ZYNGIER " />
<person posts="1" size="3" who="Frank Baumgart " />
<person posts="1" size="3" who="=?iso-8859-1?Q?Ra=FAl_Alexis_Betancort_Santana?= " />
<person posts="1" size="3" who="Bryan O'Sullivan " />
<person posts="1" size="3" who="James Harper " />
<person posts="1" size="3" who="Ron Flory " />
<person posts="1" size="3" who="Marc Merlin " />
<person posts="1" size="3" who="Kernel List " />
<person posts="1" size="3" who="Leos Literak " />
<person posts="1" size="3" who="Chris Meadors " />
<person posts="1" size="3" who="Blu3Viper " />
<person posts="1" size="3" who=" (Eugene Crosser)" />
<person posts="1" size="3" who="Jim Studt " />
<person posts="1" size="3" who="German Jose Gomez Garcia " />
<person posts="1" size="3" who="Jim Brown " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Chris Shutters " />
<person posts="1" size="3" who="Michel Catudal " />
<person posts="1" size="3" who="DAVID BALAZIC " />
<person posts="1" size="3" who="Paul Gortmaker " />
<person posts="1" size="3" who="Sergey Kubushin " />
<person posts="1" size="3" who="Pat Orourke " />
<person posts="1" size="3" who="Rainer Keller " />
<person posts="1" size="3" who="Robert Schiele " />
<person posts="1" size="3" who="=?ISO-8859-1?Q?Andr=E9_Dahlqvist?= " />
<person posts="1" size="3" who="BenH " />
<person posts="1" size="3" who="Christian Sangohn " />
<person posts="1" size="3" who="THB Samara branch " />
<person posts="1" size="3" who="Vitor Angelo " />
<person posts="1" size="3" who="Chris Adams " />
<person posts="1" size="3" who="Scott V\. McGuire " />
<person posts="1" size="3" who="Torsten Landschoff " />
<person posts="1" size="3" who="Piete Brooks " />
<person posts="1" size="3" who="Andrew Gormanly " />
<person posts="1" size="3" who="Jeff Nguyen " />
<person posts="1" size="3" who="Willy Tarreau " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Gergely Madarasz " />
<person posts="1" size="3" who="Robert Johannes " />
<person posts="1" size="3" who="Roberto Diaz " />
<person posts="1" size="2" who="Mitchell Blank Jr " />
<person posts="1" size="2" who="Kjartan Maraas " />
<person posts="1" size="2" who=" (Rene Blokland)" />
<person posts="1" size="2" who="Ulrich Drepper " />
<person posts="1" size="2" who="Benjamin Redelings I " />
<person posts="1" size="2" who="Anandvel " />
<person posts="1" size="2" who="George Staikos " />
<person posts="1" size="2" who="Michael Elizabeth Chastain " />
<person posts="1" size="2" who="Tony den Haan " />
<person posts="1" size="2" who="Sid Boyce " />
<person posts="1" size="2" who="Clyne, Paul " />
<person posts="1" size="2" who="stef " />
<person posts="1" size="2" who="Benny Amorsen " />
<person posts="1" size="2" who="Wolfram Gloger " />
<person posts="1" size="2" who="Philippe Troin " />
<person posts="1" size="2" who="Florian Weimer " />
<person posts="1" size="2" who="Mathiasen, Torben " />
<person posts="1" size="2" who="Joshua M. Thompson " />
<person posts="1" size="2" who="Joop Stakenborg " />
<person posts="1" size="2" who="Karel Kulhavy " />
<person posts="1" size="2" who="BIONDI Philippe " />
<person posts="1" size="2" who="WildSurge " />
<person posts="1" size="2" who="Dr. Michael Weller " />
<person posts="1" size="2" who="=?iso-8859-1?Q?D=E8nis_Riedijk?= " />
<person posts="1" size="2" who="Thierry Vignaud " />
<person posts="1" size="2" who="Mario Vanoni " />
<person posts="1" size="2" who="Steinar H. Gunderson " />
<person posts="1" size="2" who="Hideaki YOSHIFUJI " />
<person posts="1" size="2" who="Alan Modra " />
<person posts="1" size="2" who="Kay Nettle " />
<person posts="1" size="2" who="Stephan =?iso-8859-1?Q?Engstr=F6m?= " />
<person posts="1" size="2" who="Olivier Galibert " />
<person posts="1" size="2" who="Thomas Sailer " />
<person posts="1" size="2" who="J.D. Bakker " />
<person posts="1" size="2" who="Miles Lane " />
<person posts="1" size="2" who="Benjamin Herrenschmidt " />
<person posts="1" size="2" who="Mike Karmyshev " />
<person posts="1" size="2" who="George R. Kasica " />
<person posts="1" size="2" who=" (Miklos Szeredi)" />
<person posts="1" size="2" who="Chris Bohme " />
<person posts="1" size="2" who="Ingo Molnar " />
<person posts="1" size="2" who="Michal Jaegermann " />
<person posts="1" size="2" who="Karsten Hopp " />
<person posts="1" size="2" who="Harald Milz " />
<person posts="1" size="2" who="Andy Barlak " />
<person posts="1" size="2" who="Stephen Frost " />
<person posts="1" size="2" who="Mikael Pettersson " />
<person posts="1" size="2" who="Ajay Agrawal " />
<person posts="1" size="2" who="Ulrik De Bie " />
<person posts="1" size="2" who="Sujit Vaidya " />
<person posts="1" size="2" who="Oleg Drokin " />
<person posts="1" size="2" who="Chad Miller " />
<person posts="1" size="2" who="Marcelo Tosatti " />
<person posts="1" size="2" who="Jan Kara " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Robert A. Hayden " />
<person posts="1" size="2" who="Sandor Takacs " />
<person posts="1" size="2" who="watermodem " />
<person posts="1" size="2" who="John Goerzen " />
<person posts="1" size="2" who="Mofeed Shahin " />
<person posts="1" size="2" who="Joerg Pommnitz " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Peix Fabrice " />
<person posts="1" size="2" who="Christophe leroy " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Greg KH " />
<person posts="1" size="2" who="Leos Bitto " />
<person posts="1" size="2" who="Matthew Jacob " />
<person posts="1" size="2" who=" (Alexander L. Belikoff)" />

</stats>

<section
  title="ToDo Before 2.4"
  subject="First draft list of 2.3.x 'Things to fix'"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0001_01/msg00311.html"
  posts="125"
  startdate="04 Jan 2000 00:00:00 -0800"
  enddate="13 Jan 2000 00:00:00 -0800"
>
<topic>Disk Arrays: LVM</topic>
<topic>Disk Arrays: RAID</topic>
<topic>Disks: IDE</topic>
<topic>FS: NFS</topic>
<topic>FS: ReiserFS</topic>
<topic>FS: XFS</topic>
<topic>FS: ext2</topic>
<topic>FS: ext3</topic>
<topic>Ioctls</topic>
<topic>Networking</topic>
<topic>PCI</topic>
<topic>USB</topic>
<topic>Virtual Memory</topic>
<topic>VisWS</topic>

<mention>Chris Mason</mention>
<mention>David Weinehall</mention>
<mention>Donald Becker</mention>
<mention>Jes Sorensen</mention>
<mention>Wakko Warner</mention>
<mention>Peter Svensson</mention>

<p>Alan Cox posted a long list of things that still needed to be done before
2.4 could go out. He added that the list was approximately in order of
priority, and that he may have made some mistakes along the way. Here's his
list:</p>

<quote who="Alan Cox">

<p>
<ol>

<li>Multiwrite IDE breaks on a disk error</li>
<li>Poll on &gt; 16000 file handles fails</li>
<li>Restore O_SYNC functionality</li>
<li>Merge the network fixes - there is a ton of backed up stuff to do asap</li>
<li>ISA DMA is no longer allocating correctly aligned data</li>
<li>vmalloc(GFP_DMA) is needed for DMA drivers</li>
<li>VM needs rebalancing</li>
<li>NFSD fixes for path walking to regenerate dentries</li>
<li>Fix eth= command line</li>
<li>Check O_APPEND atomicity bug fixing is complete</li>
<li>Protection on isize  (sct)</li>
<li>Merge 2.2.13/14 changes</li>
<li>Get RAID 0.90 in</li>
<li>PAE36 failures</li>
<li>USB HID merge</li>
<li>Mikulas claims we need to fix the getblk/mark_buffer_uptodate thing gor
            2.3.x as well</li>
<li>PIII/Athlon/MMX/etc acceleration merge from 2.2.x-ac</li>
<li>Merge arcnet update (DONE)</li>
<li>Fix SPX socket code</li>
<li>AHA152x isnt smp safe (FIXED)</li>
<li>NCR5380 isnt smp safe</li>
<li>isofs break on 4Gig disk (FIXED ?)</li>
<li>Finish 64bit vfs merges (stat64 etc) (DONE ??)</li>
<li>Make syncppp use new ppp code</li>
<li>Fbcon races</li>
<li>Fix all remaining PCI code to use new resources and enable_Device</li>
<li>Stackable fs ?? (Erez)</li>
<li>Get the Emu10K merged</li>
<li>Test PMC code on Athlon</li>
<li>Fix module remove race bug (-- not in open so why did I see crashes ???
--)</li>
<li>Per Process rtsigio</li>
<li>Maybe merge the ibcs emulation code</li>
<li>VFS?VM - mmap/write deadlock</li>
<li>initrd is bust</li>
<li>rw sempahores on page faults (mmap_sem)</li>
<li>kiobuf seperate lock functions/bounce/page_address fixes</li>
<li>per super block write_super needs an async flag</li>
<li>addres_space needs a VM pressure/flush callback</li>
<li>per file_op rw_kiovec</li>
<li>enhanced disk statistics</li>
<li>Fix routing by fwmark</li>
<li>put_user appears to be broken for i386 machines</li>

</ol>
</p>

</quote>

<p>Someone reported that the USB HID merge had been completed as of 2.3.36-6</p>

<p>At some point in the conversation, David Weinehall suggested including ext3
in 2.4, but Alan pointed out, <quote who="Alan Cox">There is a lot of work
to be done to get the journalling layer nicely arranged to do the right
things and to do them right for XFS, ext3 and Reiserfs - not 2.4 material by
any means.</quote> Hans Reiser (author of reiserfs), replied:</p>

<quote who="Hans Reiser">

<p>While there is a lot of work to be done to do
things right, I don't think there is a lot of work to put ext3 and ReiserFS
into 2.3. We are working on the port right now for ReiserFS, and I don't
think we are far away.</p>

<p>If we wait for everything to be right, software never ships....</p>

<p>I think the thing to consider is that we can put journaling into 2.4, and
then niceties like allocate on flush can be done later in 2.5.</p>

<p>I have some concern that you are suggesting that there should be only one
journaling coding for both filesystems, and that is not only far away but
far from clear to me. Chris Mason (ReiserFS journaling code author) may
disagree with this, and is encouraged to comment. I'll just note that we
envision re-engineering journaling now that the current journaling is
stable. Users should use the current journaling, it should go into 2.4
because lack of journaling is keeping many users away from Linux, but
journaling is not ready for the ANSI standards process.:-) Nor is it ready
for sharing between many filesystems.... We have more than one filesystem,
why not more than one journaling system?</p>

</quote>

<p>Meanwhile, Stephen C. Tweedie (author of ext3) also replied to David,
explaining, <quote who="Stephen C. Tweedie">It's not just a matter of how
stable it is --- journaling requires a bit of extra help from the kernel for
various reasons, and we need to do a bit more work to agree exactly how the
journaling functionality will integrate into the VM before we can make it
part of the official mainstream kernel.</quote></p>

<p>David L. Parsley replied that he supposed ext3 and reiserfs were coded very
differently from each other, and asked if anyone had done a comparison, to
see if one handled the VM issues better than the other. Theodore Y. Ts'o
replied, <quote who="Theodore Y. Ts'o">My understanding is that reseirfs
suffers from the same VM issues as ext3; both currently don't coexist well
with soft-RAID (i.e. /dev/md), because of different assumptions about how
the buffer cache works, and what devices like the MD devices are allowed to
do.</quote> And Stephen explained:</p>

<quote who="Stephen C. Tweedie">

<p>There are other problems as well: on smaller
machines, we don't have any way for the "pinned" buffers associated with
transactions to be flushed early in response to memory pressure, for
example.</p>

<p>There are a few such VM issues which have to be addressed before we can get
rock-solid journaling in the kernel.</p>

</quote>

<p>Meanwhile, Linus Torvalds also replied to David Weinehall's suggestion,
predicting, <quote who="Linus Torvalds">ext3 is not going in, but reiserfs
might. Unlike ext3, raiserfs actually has gotten a lot of real-world
testing: SuSE seems to be using it in production environments with good
results. It's still 2.2.x-based, so it may not make it, but it is at least a
potential thing.</quote></p>

<p>Later in the same thread, Peter Svensson asked if reiserfs would be made
compatible with RAID5 in the near future, and Hans Reiser replied, <quote
who="Hans Reiser">We have funding to hire somebody to do it.... but no
person yet....</quote></p>

<p>Coming back to the general issue, Wakko Warner asked if PCMCIA stuff would
make it into 2.4, but Alan replied, <quote who="Alan Cox">For now Im not
even going try and track machine specific/user specific problems just
generic core stuff.</quote></p>

<p>Wakko had also added that he was using a NEC Versa SX laptop, to which Linus
replied, <quote who="Linus Torvalds">I'd LOVE to hear what happens on the box with
2.3.36. Ifyour NEC has a cardbus controller (most modern laptops do), 2.3.36
has a completely rewritten cardbus layer, and I'll be jumping up and down
with joy about repors about it.</quote> He offered, <quote who="Linus Torvalds">To
enable the new cardbus layer, please just say Y to the PCMCIA and cardbus
questions and say N to i82365 support.</quote></p>

<p>Coming back to Alan's original ToDo list, Miquel van Smoorenburg if merging
the network fixes (item 4) would include the ringbuffer / dev_alloc_skb
problems that a lot of ethernet drivers had, and which he had personally
confirmed on tulip, eepro100, and epic100. The problem apparently would
cause drivers to hang indefinitely on heavily loaded machines. He went on,
<quote who="Miquel van Smoorenburg">It looks like most if not all of Donalds
drivers have this problem, but Donald hasn't posted one word (or patch) on
this subject yet, alas.</quote> But he also added, <quote who="Miquel van
Smoorenburg">There is an alternative eepro100 driver that works fine
(running it in production on a 2.2.x kernel - the stock one hangs about two
times an hour, the new one runs for weeks and weeks), patches for the tulip
have been posted to this list around Nov. 25, and it looks like the patches
for the tulip are easy to apply to at least the epic100 driver as
well.</quote> Jes Sorensen replied, asking for more information on what the
problem actually was, and Mark van Walraven gave pointers to <a
href="http://www.uwsg.indiana.edu/hypermail/linux/kernel/9911.3/0050.html">http://www.uwsg.indiana.edu/hypermail/linux/kernel/9911.3/0050.html</a>
and <a
href="http://www.uwsg.indiana.edu/hypermail/linux/kernel/9911.3/0021.html">http://www.uwsg.indiana.edu/hypermail/linux/kernel/9911.3/0021.html</a>.
As far as whether the fixes suggested by Miquel would be included, Alan
replied, <quote who="Alan Cox">No but the 2.2.14 merge will do tulip and
eepro100 is on my .15 list</quote></p>

<p>Chuck Lever also came back to Alan's long list, suggesting possible
additions:</p>

<quote who="Chuck Lever">

<p>
<ol>

<li>some or all of ingo's latency patches</li>

<li>32 bit uid/gid support</li>

<li>madvise</li>

<li>ibm's task struct cacheline fix for goodness()</li>

<li>appropriate dynamic sizing of kernel hash tables</li>

</ol>
</p>

</quote>

<p>Alan pronounced that Chuck's item #2 would go in, and item #3 was a maybe.
He asked for a copy of the patch for item #4, and to item #5 he replied,
<quote who="Alan Cox">Thats part of pushing the 2.2.13/14 fixes into 2.3.x
probably</quote></p>

<p>David L. Parsley also suggested, in reply to Alan's long list, that LVM be
included in 2.4. He gave a pointer to the <a
href="http://www.the-infinite.org/lvm_petition/index.phtml">Petition to get
LVM into the Linux kernel</a>, and added that 1257 people had signed (as I
write this, the number is up to 1366, a jump of over 100 people in 18 days).
He went on, <quote who="David L. Parsley">With the proliferation of ext2
resizing tools, this sure would be sweet; LVM could have saved my butt a few
times in the last few years,</quote> and asked, <quote who="David L.
Parsley">Any numbers on the "minimal" performance loss of the extra
layer?</quote> Alan replied:</p>

<quote who="Alan Cox">

<p>When I tried it for a bit in 2.2.x-ac I couldnt
measure any.</p>

<p>The reason I gave up adding it to -ac was that I cleaned it up , I fixed it
for the Coding Style document and I fixed some bugs. I got an update from
the author that simply ignored all that work and reverted to wrong formats.</p>

<p>Every annoyance I personally have with the LVM code comes down to two
things</p>

<p>
<ol>

<li>Not following the Coding Style</li>

<li>General poor readability - lots of complex loops, huge ioctl functions</li>

</ol>
</p>

<p>The main thing it made me wonder was if the ioctl interface layer was
perhaps structured badly and perhaps using different ways to pass the data
would avoid a lot of the mess in the existing code.</p>

<p>The actual remapping code is fast, clean and works. It also has about zero
impact if the LVM is disabled.</p>

</quote>

<p>Regarding the petition, Matthew Wilcox retorted, <quote who="Matthew
Wilcox">Someone decided to petition Linus. I never saw a post from Linus
asking whether anyone wanted it or not. Hopefully this lame effort will have
no impact on whether or not LVM goes in. This sort of thing is more likely
to prejudice people against it, to be honest.</quote> And Pedro M. Rodrigues
added, <quote who="Pedro M. Rodrigues">I agree. Even though i do have a need
for LVM in my servers (they look kinda ugly next to those AIX machines) i
felt awkward when i knew about the petition. Don't ask me why, but i feel
that a lot of people asking for the same thing doesn't mean it's the right
thing to do.</quote> But David replied:</p>

<quote who="David L. Parsley">

<p>I think you took my message the wrong way; my
impression from the LVM site was "LVM meets the technical criteria, but
Linus wants an idea of who is interested in support for this" - maybe Linus
replied to a message and didn't CC lkml. Maybe not. Still, LVM made it into
a couple of -ac patches, so I figure it's technically sound.</p>

<p>I agree that the idea of petitioning for a patch that Linus has rejected
based on his design judgement is, well, lame. 'Petition' was maybe the wrong
word, but not my choosing.</p>

</quote>

<p>Going back to Alan's big list, Jamie Lokier replied with some suggested
additions:</p>

<quote who="Jamie Lokier">

<p>
<ol>

<li>memory detection is broken and may be causing fs corruption</li>

<li>IDE DMA failures</li>

</ol>
</p>

</quote>

<p>Andre Hedrick replied, of the IDE DMA failures, <quote who="Andre
Hedrick">This I have fixed, and hope to submit something to night. There are
a few more general features and fixes also.</quote> And Nathan Zook said of
Jamie's item #1, <quote who="Nathan Zook">Actually, the "famous" memory
detection break IS fixed. If I had been paying better attention, it would
have been fixed months ago instead of weeks.</quote></p>

<p>Martin Mares also had some things to add to Alan's big list; among other
things, he asked, <quote who="Martin Mares">Are we going to merge new
drivers by Donald Becker? If so, merge his PCI scan code first and make it
call 2.3 functions.</quote> Alan explained:</p>

<quote who="Alan Cox">

<p>I tried a couple of times to sort the mess out. I
never got the PCI scan code to work right, it kept not checking resources,
registering I/O as memory and stuff. I at least don't think its ready. The
drivers also seemed to have problems (not that the existing ones dont).
Right now I'd rather 2.3.x picked up the fixes from 2.2.14 for tulip and
acquired the eepro100 and other work people have been doing then the bug
fixes from Donalds driver updates.</p>

<p>Its not that I don't think Don is on the right track, just I don't think he
has the right implementation.</p>

</quote>

<p>Martin offered, <quote who="Martin Mares">If you want, I can take a look at
his PCI probing code and fix the resource problems. It seems to be close to
trivial.</quote> Alan didn't reply.</p>

<p>In that same staircase with Alan, Martin had also suggested in a separate
threadlet, <quote who="Martin Mares">Check whether VISWS compiles and if
there's nobody to test it, mark it as experimental. It's probably got broken
by many i386 changes.</quote> Alan replied, <quote who="Alan Cox">Thats IMHO
SGI's problem. Im assuming they will at some point resync with it and
produce a small chunk of needed patches,</quote> and Martin said, <quote
who="Martin Mares">They say nobody is working on Linux VISWS stuff
now.</quote></p>

</section>

<section
  title="/proc And sysctl()"
  subject="/proc guidelines and sysctl"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0001_01/msg00793.html"
  posts="43"
  startdate="06 Jan 2000 00:00:00 -0800"
  enddate="12 Jan 2000 00:00:00 -0800"
>
<topic>BSD</topic>
<topic>Executable File Format</topic>
<topic>FS: procfs</topic>
<topic>Ioctls</topic>
<topic>Networking</topic>
<topic>PCI</topic>

<mention>Mark Lord</mention>

<p>Benjamin Reed wrote a wireless ethernet driver that used /proc as its
interface. But he was a little uncomfortable defining his own namespace
under /proc, and asked if there were any conventions he should follow. He
added, <quote who="Benjamin Reed">And finally, what's up with sysctl? Are
driver writers recommended to use that over extending /proc or is it
deprecated? Again guide lines would be nice.</quote></p>

<p>Linus Torvalds replied with:</p>

<quote who="Linus Torvalds">

<p>The thing to do is to create a</p>

<blockquote>

<code>

        /proc/drivers/&lt;drivername&gt;/

</code>

</blockquote>

<p>directory. The /proc/drivers/ directory is already there, so you'd basically
do something like</p>

<blockquote>

<code>

        create_proc_info_entry("driver/mydriver/status", 0, NULL, mydriver_status_read);

</code>

</blockquote>

<p>to create a "status" file (etc etc).</p>

</quote>

<p>For the sysctl question, he added, <quote who="Linus Torvalds">sysctl is deprecated.
It's useful in one way only: it has some nice functions that can be used to
add a block of /proc names. However, it has other downsides (allocating
silly numbers etc - there should be no need for that, considering that the
/proc namespace is alreayd a perfectly good namespace).</quote></p>

<p>Marcin Dalecki flamed Linus:</p>

<quote who="Marcin Dalecki">

<p>Are you just blind to the neverending
format/compatiblity/parsing/performance problems the whole idea behing /proc
induces inherently? Oh yes they don't turn up that frequently anylonger,
since everybody learned in the time between don't touching anything there
like a heap of shit. Instead of changing something, one leaves the broken
/proc interface where it is and adds just another new file (or even dir)
there.</p>

<p>My favorite examples for how broken they are</p>

<blockquote>

<table border="0">

<tr><td>/proc/stat        </td><td>
                                              the information
                                              there is entierly *broken*
                                              misleading and incomplete.
                                              (leftover from early
                                              days.)</td></tr>

<tr><td>/proc/pci         </td><td>
                                              static data
                                              continuously reconstructed on
                                              the fly. (binary to string and
                                              then back string to binray in
                                              userland...) And now (2.3.xx)
                                              it's event binary
                                              only...</td></tr>

<tr><td>/proc/cpuinfo     </td><td>
                                              same here static
                                              data. uname is since the
                                              beginnging the proper
                                              interface for this
                                              stuff.</td></tr>

<tr><td>/proc/ksyms       </td><td>
                                              entierly
                                              redundant and not used by the
                                              modutils.</td></tr>

<tr><td>/proc/modules     </td><td>
                                              entierly
                                              redundant to the module
                                              syscalls. *Not* used by
                                              lsmod.</td></tr>

<tr><td>/proc/version     </td><td>
                                              entierly static
                                              data with no apparent
                                              value</td></tr>

<tr><td>/proc/kmsg        </td><td>
                                              entierly
                                              redundant to
                                              syslog.</td></tr>

</table>

</blockquote>

<p>One could continue with no end...</p>

<blockquote>

<code>

root:/proc# cat meminfo<br />
        total:    used:    free:  shared: buffers:  cached:<br />
Mem:  64577536 62787584  1789952 20643840  1339392 17186816<br />
Swap: 139821056 36478976 103342080<br />
MemTotal:     63064 kB<br />
MemFree:       1748 kB<br />
MemShared:    20160 kB<br />
Buffers:       1308 kB<br />
Cached:       16784 kB<br />
SwapTotal:   136544 kB<br />
SwapFree:    100920 kB

</code>

</blockquote>

<p>Wonderfull!!!! The same data twice, albeit no one of them easly parsed!
Easly parsed? By what? AWK? SED? or should the procps utilities beeing
implemented in damn PERL? (Some loosers who don't know C would apreciate
this, certainly) !!!!! The only thing I'm missing is adding floating point
formats to this...</p>

<p>And then there is the phenomenon of proliferation of /proc items. Just an
example...</p>

<blockquote>

<code>

root:/proc/ide# find /proc/ide<br />
/proc/ide<br />
/proc/ide/drivers<br />
/proc/ide/hdd<br />
/proc/ide/ide1<br />
/proc/ide/ide1/hdd<br />
/proc/ide/ide1/hdd/capacity<br />
/proc/ide/ide1/hdd/settings<br />
/proc/ide/ide1/hdd/model<br />
/proc/ide/ide1/hdd/media<br />
/proc/ide/ide1/hdd/identify<br />
/proc/ide/ide1/hdd/driver<br />
/proc/ide/ide1/model<br />
/proc/ide/ide1/mate<br />
/proc/ide/ide1/config<br />
/proc/ide/ide1/channel<br />
/proc/ide/hda<br />
/proc/ide/ide0<br />
/proc/ide/ide0/hda<br />
/proc/ide/ide0/hda/smart_thresholds<br />
/proc/ide/ide0/hda/smart_values<br />
/proc/ide/ide0/hda/geometry<br />
/proc/ide/ide0/hda/cache<br />
/proc/ide/ide0/hda/capacity<br />
/proc/ide/ide0/hda/settings<br />
/proc/ide/ide0/hda/model<br />
/proc/ide/ide0/hda/media<br />
/proc/ide/ide0/hda/identify<br />
/proc/ide/ide0/hda/driver<br />
/proc/ide/ide0/model<br />
/proc/ide/ide0/mate<br />
/proc/ide/ide0/config<br />
/proc/ide/ide0/channel

</code>

</blockquote>

<p>Hell only God know's what they are good for! And there is no userland tool
for this. This is the last thing Mark Lord added before ditching ide
developement.</p>

<blockquote>

<code>

root:/proc/sys# find /proc/sys | wc<br />
    208     208    7305

</code>

</blockquote>

<p>Don't tell me any sane admit will fiddle with ALL this... And in esp. any
sane system doesn't need this degree of pseudo configuration flexibility.</p>

<p>And here my ABSOLUTE FAVORITE:</p>

<blockquote>

<table border="0">
<tr><td>  PID </td><td>USER     </td><td>PRI  </td><td>NI  </td><td>SIZE </td><td> RSS </td><td>SHARE </td><td>STAT  </td><td>LIB </td><td align="center">%CPU </td><td>%MEM   </td><td>TIME </td><td>COMMAND</td></tr>
<tr><td>21821 </td><td>root     </td><td> 19  </td><td> 0  </td><td>1032 </td><td>1032 </td><td>  816 </td><td>R     </td><td>  0 </td><td align="center"> 4.7 </td><td> 1.6   </td><td>0:00 </td><td>top    </td></tr>
<tr><td></td><td> </td><td>         </td><td>     </td><td>    </td><td>     </td><td>     </td><td>      </td><td>      </td><td>    </td><td>
<pre>    *
   ***
  *****
 *******
*********
   ***
   ***
   ***
   ***
   ***
   ***</pre></td><td>       </td><td>     </td><td>       </td></tr>

</table>

</blockquote>

<p>Yes reading files, walking dirtrees and parsig them is indeed very very time
consuming. I would like to know how well this design will scale to an
enterprise server with 32 CPU and X*10000 concurrent processes:</p>

<blockquote>

        user:~/mysweethome:
        Message from root@localhost to user@localhost resived... BLAH BLAH:
        "Please stop any intensive intermittient computational activity.
         Due to maintainance work I'm going to run ps auxw int 5 minutes.
         Thank's in advance for your understanding!

         You's sincerly:

         root@localhost"

</blockquote>

<p>Oh don't tell me procps could have been done better, there where years of
time for this and apparently nobody managed to get it right for practical
reaons..</p>

<p>I think you don't write enough user-land code... (just a guess) go and just
compare for example the ps/netstat utlities from *BSD just too see WHY /proc
as it is, is a BAD design :-).</p>

<p>Maybe it appears cute as an idea to have something like this, but in
practice something like this is inevitable going to result in a coding mess
in esp. in an such uncoordinated effort like Linux.</p>

<p>And I didn't even tell a word about the bloat/mess/races inside the kernel
code caused by this all...</p>

<p>Really man sysctl *is* much much saner and what should be "depricated" is
/proc</p>

</quote>

<p>There was a bit of discussion, but Linus did not reply.</p>

<p>Alexander Viro replied to Linus' statement that sysctl was deprecated. He
burst out with:</p>

<quote who="Alexander Viro">

<p>Oh, please! All we need is sysctlbyname(2) -
_not_ a problem, and closes all problems with numbers. And it should not
work through mounted procfs - we can traverse the tree doing comparisons by
name just fine. The fact that sysctl(8) needs mounted procfs is an
artificial misfeature, nothing more.</p>

<p>What _is_ bogus is the idea of sysctl() doing more than read/write access to
constant-sized variables. Or procfs entries doing ioctl(), for that matter -
just look at /proc/mtrr, for one specimen.</p>

<p>sysctl() is a perfectly reasonable subset of pseudofs-type stuff, with
well-defined semantics (unlike the rest ;-/). The rest is pretty much a maze
of twisted little formats, none alike. IMO dissolving the thing is
_not_ a good idea. You have the final word, indeed, but I think that
sysctlbyname() may remove most of the problems.</p>

</quote>

<p>Linus replied that he'd accept a patch to turn sysctl into a proc-only
thing. He added, <quote who="Linus Torvalds">The current problem is that sysclt tries
to be more than proc, and has its own name-space etc. Not worth it.</quote>
Andi Kleen proposed, <quote who="Andi Kleen">The nice thing of giving up the
sysctl numbers is that it would be possible to use some ELF section based
scheme for declaring sysctl variables in nice wrapper macros. You could get
a sysctl variable with a single declaration. This would make them a lot more
easy. Would you accept a patch for that?</quote> Linus replied, <quote
who="Linus Torvalds">Show me the patch, and I can consider it. It would certainly be
nicer than what it is now (the include/linux/sysctl.h file is EVIL, and a
perfect example of the kind of idiotic brokenness we used to have in /proc
before it was cleaned up).</quote></p>

<p>Theodore Y. Ts'o also replied to Alexander, saying, <quote who="Theodore Y.
Ts'o">I actually like the original sysctl() design --- including the use of
reserved numbers. After all, we have system calls, and we don't try to look
up system calls when we executed them by name..... why is this OK for system
calls, but not OK for sysctl()?</quote> Linus replied:</p>

<quote who="Linus Torvalds">

<p>Because system calls are performance-sensitive.</p>

<p>And system calls are not clearly "hierarchical".</p>

<p>And system calls are supposed to be there regardless of what software and
hardware configuration we have there.</p>

<p>In contrast, sysctl isn't all that performance-sensitive, AND they are
extremely hierarchical, AND they depend on configuration and timing.</p>

<p>In short, sysctl NEEDS:</p>

<p>
<ul>

<li>"naming": you cannot name the sysctl space with a number: it is much
   too dynamic for that. How do you enumerate drivers? Give them random
   numbers?</li>

<li>"listing": showing which sysctl's are there, in a hierarchical manner.
   Again, a listing is useless with a number.</li>

<li>"hierarchy". You have different devices, but they have the same
   controls. Do they get the same name? Yes. But in different places in
   the hierarchy.</li>

</ul>
</p>

<p>In short, you NEED a filesystem. You need to be able to "ls" the thing. You
need to be able to search the thing. You need to be doing all the things you
can do with a real filesystem.</p>

<p>And flattening it out and trying to number it does not work. Never has,
never will. It's not an enumerated space.</p>

</quote>

</section>

<section
  title="Block Device Interface Change And Related Pain"
  subject="[ANNOUNCE] block device interfaces changes"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0001_02/msg00009.html"
  posts="52"
  startdate="07 Jan 2000 00:00:00 -0800"
  enddate="11 Jan 2000 00:00:00 -0800"
>
<topic>FS: NFS</topic>
<topic>FS: devfs</topic>
<topic>FS: procfs</topic>
<topic>Ioctls</topic>
<topic>POSIX</topic>
<topic>Real-Time</topic>

<mention>Donald Becker</mention>

<p>Alexander Viro announced that the block device interface would be changing,
and that some of these changes had made it into 2.3.38; he listed:</p>

<quote who="Alexander Viro">

<p>
<ol>

<li>New type (struct block_device) is defined. We have a cache of such
objects, indexed by dev_t. struct block_device * is going to replace kdev_t
for block devices. Handling of the cache is done in fs/block_dev.c</li>

<li>They have methods (struct block_device_operations). Currently the set is
{ open, release, ioctl, revalidate, check_media_change }. For now (and it's
going to change) types are the same as in file_operations. However, in the
near future they are going to become</li>

<blockquote>

<code>
        int (*open)(struct block_device *bdev, mode_t mode, unsigned flags);<br />
        int (*release)(struct block_device *bdev);<br />
        int (*ioctl)(struct block_device *bdev, unsigned cmd, unsigned long arg);<br />
        int (*revalidate)(struct block_device *bdev);<br />
        int (*check_media_change)(struct block_device *bdev);

</code>

</blockquote>

<li>-&gt;revalidate() and -&gt;check_media_change() disappeared from
file_operations.</li>

<li>register_blkdev() takes block_device_operations instead of
file_operations now. For one thing, it means that block devices are more or
less insulated from all future changes in file_operations (Good Thing(tm)).
For another, it means that drivers should be modified. I did the change for
all drivers in the main tree, see the patch for details. It's pretty easy.</li>

<li>blkdev_open() doesn't change -&gt;f_op. def_blk_fops has all needed
methods (open, release and ioctl call the methods from
block_device_operations, indeed).</li>

<li>Inodes got a new field: i_bdev. Filesystems should not worry about it -
just remember to call init_special_inode() when you are initializing
device/fifo/socket in-core inode (in foo_read_inode() or in foo_mknod(); all
filesystems in the tree are doing it now). Contents of this field: pointer
to struct block_device if it is a block device inode, NULL otherwise.</li>

<li>Superblocks got a new field: s_bdev. Handled by code in fs/super.c,
points to the struct block_device if the mount is device-backed, NULL
otherwise (i.e. for NFS, CODA, procfs, etc.).</li>

<li>do_mount() first argument is struct block_device * now. It does the
right thing for non-device mounts - just pass NULL and it will work
(allocate the anonymous device, etc.)</li>

<li>Instead of calling get_blkfops(), use -&gt;bd_op in struct block_device.
Moreover, better use blkdev_get()/blkdev_put()/ioctl_by_bdev() (see examples
in mm/swapfile.c, drivers/char/raw.c, fs/super.c, fs/isofs/inode.c,
fs/udf/lowlevel.c).</li>

<li>Thing that is probably going to happen RSN: instead of struct gendisk
per major we may want to go for struct gendisk per _disk_. It would mean
that at some point near -&gt;open() we will put the pointer to it into the
struct block_device. One obvious consequence being that partitions-related
ioctls() will become completely generic.</li>

</ol>
</p>

<p>Notice that it is _not_ the same as devfs (and not a beginning of moving
devfs into the main tree). It just provides the backplane - no namespace, no
nothing. Inodes (either in normal filesystems or in devfs) point to such
animals. That's it. Eventually things like -&gt;b_dev, -&gt;b_rdev, -&gt;i_dev,
-&gt;rq_dev, etc. are going to become pointers to such objects, but it will
be done step-by-step - otherwise we'll end up with a moby patch and moby
breakage in bargain...</p>

<p>Character devices are not affected at all - IMO using the same type both for
block and character device was a mistake. So their handling remains as-is.
Probably something should be done for them too, but that's completely
different story.</p>

</quote>

<p>Richard B. Johnson picked himself up off the floor and said:</p>

<quote who="Richard B. Johnson">

<p>Good grief Charley Brown! You, in a few
key-strokes, just blew away major portions of the work done over the past
few years by software engineers who ported their drivers to Linux. Linux
will never be accepted as a 'professional' operating system if this
continues.</p>

<p>It's enough of a problem putting one's job on-the-line convincing management
to risk new product development to Linux. Once these products are in
Production, and bugs are discovered in the OS, we must be able to get the
latest version of the OS and have our drivers compile. If this is not
possible, you do not have an operating system that is anything other than an
interesting experiment.</p>

<p>For instance, there was a simple new change in the type of an object passed
to poll and friends. This just cost me two weeks of unpaid work! Unpaid
because I had to hide it. If anyone in Production Engineering had learned
about this, the stuff would have been thrown out, the MicroCreeps would have
settled in with "I told you so..", and at least three of us would have lost
our jobs.</p>

<p>Industry is at war. You can't do this stuff to the only weapons we have.
Once you claim to have a "Professional Operating System", its development
must be handled in a professional way. If major kernel interface components
continue to change, Linux is in a heap of trouble as are most all of those
who are trying to incorporate it into new designs.</p>

<p>The industrial use of Linux is not at the desktop. It involves writing
drivers for obscure things like machine controllers (read telescope
controllers), Digital signal processors (read medical imaging processors),
and other stuff you can't buy at the computer store. It doesn't matter if
you fix all of Donald Becker's drivers to interface with the new kernel
internals. You have still broken most everything that counts.</p>

</quote>

<p>There were a number of replies to this. Alexander found Richard's post
clueless and Monty-Pythonesque. On a serious (though annoyed) note, he
explained, <quote who="Alexander Viro">one of the worst things about block
drivers-to-kernel interface is that they share it with files. I.e. _any_
change in file_operations or in struct file or in struct inode and you are
deep in it. Change the size of any field prior to -&gt;i_dev and you are in
for recompile. Change
&lt;gasp&gt; device number bitness and even recompile may be of little help.
Removing those dependencies (not all of them are removed yet, more will
follow) is going to save _your_ ass a year later.</quote></p>

<p>Also replying to Richard, Victor Khimenko said, <quote who="Victor
Khimenko">Drivers MUST be changed with new kernel release (and thus via
development branch: development kernels are just snapshots of development
process after all). It was true from the start and it'll be true tomorrow.
It's true for most OSes available. It's ESPECIALLY true for Linux where
drivers are linked directly in kernel. If you expected something other then
you made wrong choice choosing Linux.</quote></p>

<p>Gregory Maxwell said to Richard:</p>

<quote who="Gregory Maxwell">

<p>We all know your position on compability. :)
Many people, including myself, usually understand and agree with it.</p>

<p>However, you are going a little far on this one.</p>

<p>The change is going into 2.3.x, and that *IS* the approiate place to break
interfaces. These kinds of changes should certantly not be introduced into
2.2.x.</p>

<p>This should cause you little difficulity, as your example of having to
upgrade to fix a bug should not apply. When you upgade to fix a bug then you
should just be increasing patchlevel. If there is not a patch for a bug in
2.2.x which is fixed in 2.4.x then there is a bug in the Linux development
process.</p>

<p>In order to move forward, we *must* break things. To make up for this we
continue to maintain old versions. There are still bugfixes being made
against 2.0.x and there will be bugfixes against 2.2.x. RedHat even still
issues updates against RH4.2..</p>

<p>So if this were to have occured within a stable kernel version, or if it had
severly affected userspace, I would agree.</p>

</quote>

<p>Rik van Riel put it this way to Richard:</p>

<quote who="Rik van Riel">

<p>Industrial use of Linux usually doesn't involve
the kernels which are marked as `development', ie. where the `middle'
version number is odd and where major things are expected to change.</p>

<p>People venturing out on that terrain can know what they're heading into (see
<a href="http://kt.zork.net/">http://kt.zork.net/</a>) and
shouldn't come whining when some actual development happens in the
development branch of the kernel. The should only whine when development
stops, not when useful changes are taking place...</p>

</quote>

<p>But David Parsons objected to Rik, <quote who="David Parsons">Except, of
course, that when the changes go in they are never backed out so the
interfaces remain stable for the production kernels. That's the *really*
annoying thing about this line of argument; when else should someone
complain that an interface has been turned into gravel? If you wait until
the development tree has become a production tree, enough code will be
modified to work with the New! And! Improved! interfaces that your
complaints (cf: old-style fcntl locking) will be dismissed sight unseen by
the Core Team.</quote> He added, <quote who="David Parsons">The big support
providers are the ones who benefit from interface churning. It's the small
shops that get bitten in the ass because they don't have enough money to buy
programmers or enough time to do the patches.</quote> There was no reply to
this.</p>

<p>Alan Cox also replied to Richard with the quote of the day, saying, <quote
who="Alan Cox">Linux isnt at war. War involves large numbers of people
making losing decisions that harm each other in a vain attempt to lose last.
Linux is about winning.</quote></p>

<p>At some point, Richard posted again, having received many private emails in
addition to the slew on the list. He said:</p>

<quote who="Richard B. Johnson">

<p>I have gotten a lot of mail on this so I
will reply only once.</p>

<p>Many of the professional industrial uses of Unix were previously covered
using Sun boards, boxes and SunOs. If you ever dial 10 before a
long-distance number to get a cheaper rate, that's voice over IP and we make
that stuff. This was developed on Suns, runs on them, but will soon be
running on cheap Intel clones.</p>

<p>If you ever have to go to the hospital and have a CAT-Scan or a MRI, you are
using equipment developed by us, even though the name on the box may be
Phillips, General Electric, Toshiba, or various other companies. You can
look <a href="http://www.analogic.com">http://www.analogic.com</a> and see
what we do for a living here.</p>

<p>The Sun driver interface has been constant. Unfortunately, you have to
install it, meaning link it and reboot. When Installing a system, meaning
the complete software package, the end-user's technician installs the OS
from a CDROM. Then the application with its drivers are installed from
another CDROM. This works on Suns and has been the De-facto standard way of
doing things.</p>

<p>Linux was not suitable for the applications running on Suns until Linux
provided the installable device driver. The ability to install a
hardware-interface module into a kernel was my main selling point for using
Linux to replace SunOs, and, indeed the whole Sun architecture.</p>

<p>Incidentally, the cost is the same.  A CDROM for Solaris is essentially the
same cost as a CDROM for Linux. Once you start distributing an operating
system and supporting the distributors, a "free" operating system is no
longer free.</p>

<p>By the time a decision was made to produce our new Exact Baggage Scanner,
marketed by Lockheed-Martin, engineering management was dragging its feet on
the use of Linux. They wanted something that was "everything to everybody",
but didn't want the cost of using Suns. Further, it had to be completely
under company control.</p>

<p>I was unable to convince anybody to use Linux so I had to write my own
Operating System. It is called ARTOS (Analogic Realtime Operating System).
Our Sky Computer Division, which produces the world's fastest (still)
digital signal processor, made the high-speed stuff, a lowly Intel Pentium
with my OS is used as the system controller, and an Alpha Workstation is
used for the user interface.</p>

<p>When this was completed, we went on to producing our third generation CAT
Scanner. This uses a Pentium as the main system controller and Linux as the
operating system. The User Interface uses Windows-NT. It was felt that Linux
was sufficiently well-hidden in the bowels of the machine so nobody would
care.</p>

<p>The drivers in this machine comprise both block and character devices. One
of major building blocks is the driver that interfaces to the Digital Signal
Processor. This DSP board comprises up to 32 TMS-320C20 DSPs plus an i960
for interface. It is made by our CDA Division.</p>

<p>Completed data, available within a 32k window, a 512x512x16bit chunk, must
be transferred to the User Interface within 1/4 second to make the
specification. It does.</p>

<p>Now, our legal department has defined the criteria we must meet to use
Linux. They presume that we will provide a "current distribution" of Linux
to every end-user. They also defined that, since drivers may be deemed to
modify the operating system, we have to provide driver source-code to the
customer if they request it. Application code continues to be proprietary.</p>

<p>Changing the kernel interface to drivers is counter productive. In fact it
makes the usual field installation impossible. The usual installation would
automatically and transparently compile the interface modules, using the new
Operating System. This is no longer possible because the compilation will
fail.</p>

<p>Again, if Linux is to become other than an interesting experiment, one
cannot change these interfaces without understanding the whole picture.</p>

<p>Distributors don't care. The more changes there are, the greater the
obsolescence, the more money they make selling new boxes of CDROMs.
Therefore there is no controlling negative feedback to be obtained from the
distribution channel. You can reject what I say out-of-hand, and continue as
an experiment, or you can listen and make a significant contribution to
providing jobs worldwide.</p>

<p>It is, of course, possible to fragment Linux. A company could be started,
called StableLinux that distributes only Linux n.n.n and performs bug-fixes
and maintenance on that version only. This is not helpful to the greater
Linux community. Instead, we need to minimize the changes that affect the
interfaces to world-wide applications. Just as POSIX attempted to stabilize
the API so that one could write "portable" code, the interface to hardware
that hasn't even been invented yet has to be stable.</p>

</quote>

<p>Chris Adams and Horst von Brand suggested that "current distribution"
refered to even-numbered minor version numbers only. Horst expanded, <quote
who="Horst von Brand">OK, "current distribution" means 2.2.x kernel today,
and was 2.0 sometime back. It will be 2.4 in a few months time, and perhaps
2.6 in a year and a half. You are supposed to distribute the machine and
source to drivers &amp;c _when shipped_, I'd assume. Check the code, test it
to breaking *and keep it*. Ship that to customers, and either offer upgrades
to 2.4 if needed for some reason, or stay put.</quote></p>

<p>Elsewhere, replying to Richard's original post, Jamie Lokier said, <quote
who="Jamie Lokier">If you need a stable API, you chose the wrong operating
system. It's no secret that Linux APIs change. You can't blame the kernel
developers for doing exactly what they said they will do. If you want, you
can blame the people who incorrectly assumed the APIs would stay the same,
for not investigating the obvious.</quote> And Ted added, <quote
who="Theodore Y. Ts'o">If you told your management that Linux kernel
interfaces never change across versions, then you were sadly mistaken.
However, the mistake is on your end, I'm afraid.</quote></p>

<p>To this, Richard replied:</p>

<quote who="Richard B. Johnson">

<p>No. According to our Legal Department, to
satisfy the GPL requirement that we provide source to the end-user, they
required that we supply a "current" distribution of Linux if the end-user
requests it.</p>

<p>This seemed, by them, to be an easy solution to possible problems.
Unfortunately, for Engineering, this means that we have to keep everything
"current" during development so that, by the time equipment is shipped, it
will run with the "current" distribution (whatever this is).</p>

<p>The obvious solution, given these constraints, is that we just ignore all
changes until shipping time, then attempt to compile with the latest
distribution, fixing all the problems at once. However, we then end up
shipping untested software which ends up being another problem. Checking to
see if it "runs" isn't testing software in the cold cruel world of industry.</p>

<p>So, presently, I have 13 drivers I have to keep "current". Yesterday they
all got broken again. A week before, half of them were broken because
somebody didn't like a variable name!</p>

<p>That said, a major problem with changes that I see, is that the changes are
made without the notion of a terminating condition. For instance, new
parameters are being passed to existing interface functions.</p>

<p>If you are going to break an interface, you should plan on only breaking it
once rather than opening the door for more changes and leaving it open. For
instance, once you have to pass more than (depends upon the machine) about 3
parameters, it's best to put them all in a parameter- list (structure) and
pass only the address of the parameter list (pointer).</p>

<p>From that time on, you only have to add structure members to the parameter
list if you have to add changes. If I had seen these kinds of changes I
would not have complained. It means I have to rework stuff only once.</p>

<p>So `read(f,.......)` should have been changed to  `read(params *)` and you
are done with it forever as long as you don't change structure member names
and functions for kicks.</p>

</quote>

<p>This time it was Alexander's turn to pick himself up off the floor; and in
response to the first paragraph of Richard's post, said, <quote
who="Alexander Viro">Oh. My. God. They are requiring you to do WHAT??? Do
you mean that you really ship 2.3.x to your customers? Arrggh. "Source" ==
"source of what we are shipping". And not "anything that was written by
other guys who started from the same source". It's utter nonsense. _No_
license can oblige you to include the modifications done by somebody else.
Otherwise you'ld have those drivers in the main tree, BTW - _that_ much
should be clear even for your LD.</quote> But David Lang put in, <quote
who="David Lang">he is not saying that he has to ship a 2.3 kernel, he is
reacting to the fact that he will have to ship a 2.4 kernel. the blame for
this lies squarly on the legal department who decided that they had to ship
a "current" disto. There is some semblance of reason for this as they want
to try and limit the support costs by not using "obsolete" versions, but
given the way many of the major distros patch the kernel before shipping it
you still may have problems. The answer is to figure out some way to educate
the legal department to allow for a more gradual change.</quote></p>

</section>

<section
  title="TESO Security Alert"
  subject="Linux Kernel 2.0.x/2.2.x local Denial of Service attack"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0001_02/msg00228.html"
  posts="10"
  startdate="09 Jan 2000 00:00:00 -0800"
  enddate="11 Jan 2000 00:00:00 -0800"
>
<topic>BSD</topic>
<topic>Networking</topic>
<topic>Security</topic>

<mention>Victor Khimenko</mention>
<mention>Alexey Kuznetsov</mention>

<p>Sebastian Krahmer from the TESO group posted another security advisory. This
one included some code to exploit the hole, and summarized, <quote
who="Sebastian Krahmer">A weakness within the Linux 2.0.x and Linux 2.2.x
kernels has been discovered. The vulnerability allows any user without
limits on the system to crash arbitary processes, even those owned by the
superuser. Even system crashes can be experienced.</quote></p>

<p>Victor Khimenko replied that this problem had been known for at least a year
and had been discussed many times on linux-kernel; he added unhappily that
there was still no solution in the main tree. Alexey Kuznetsov replied that
the problem had existed for at least 5 years, and Alan Cox added, <quote
who="Alan Cox">I know no single Unix like OS I can't bring down if I dont
have resource limiting. Also for that matter Ive yet to meet one I can't
kill even with resource limiting in place.</quote> Victor then quoted
Sebastian as saying in private email:</p>

<quote who="Sebastian Krahmer">

<p>Oh, I didn't knew that. I know that this is
no common malloc() bomb problem, and we haven't heard about it, so we want
to make it public, even if it is known to the kernel developers. A bit
pressure to the admins side could not be wrong to use resource limits.</p>

<p>Btw, any BSD we tried on doesn't suffer from this or similar
problems.</p>

</quote>

<p>Sebastian objected to his private email being posted out of context to a
public forum, and went on to explain:</p>

<quote who="Sebastian Krahmer">

<p>my point was, I believe in both,
full-non-disclosure (keeping something to just yourself or to a very small
group) or full-disclosure (sharing it with everyone at the same time).</p>

<p>The point now is, that many Linux distributions ship with no resource
limitations activated by default, and a lot of administrators don't know
about them or how to enable them. By raising public attention to this
problem you bring many administrators to raise the barrier by enforcing
resource limits, which is good.</p>

<p>Creating this pressure is often seen in a bad way by both developers ("we
developers want to be notified first to fix it") or by companies, of which
some ignore security issues until enforced by customers to fix them (hi
bill).</p>

<p>However, I think of this pressure as a necessary thing, and that was what I
meant in the mail to Khimenko.</p>

<p>On the other hand, Unix wasn't build for DoS-users, and I'm sure Alan is
able to crash mostly anything. But using resource limits anyway is a good
thing and any admin should use them.</p>

</quote>

<p>He continued, <quote who="Sebastian Krahmer">Another thing which Khimenko
"accused" me of was that this has been known on the kernel mailing list for
ages. I remember on our first advisory that the TCP spoofing vulnerability
in Linux &lt;= 2.2.12 kernels was known to the developers also, but no one
outside the mailing list ever noticed it, if we wouldn't have published an
advisory about it (we found it independently though), no one would know it
today. So please don't blame me that I cannot read 250++ mails per day just
to ensure we don't release something already known to some people.</quote></p>

<p>Alan agreed that raising public awareness of the problem was a good thing;
and that TESO could not be expected to comb through linux-kernel just to
make sure the exploits they discovered were truly unknown.</p>

</section>

<section
  title="linux-kernel Mailing List Problems"
  subject="[OT]mailing list delay"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0001_02/msg00704.html"
  posts="4"
  startdate="11 Jan 2000 00:00:00 -0800"
  enddate="12 Jan 2000 00:00:00 -0800"
>

<mention>Andreas Tobler</mention>

<p>Andreas Tobler reported a 5 to 6 hour delay receiving linux-kernel mail. A
couple people confirmed experiencing the same thing, and Matthias Andree
speculated, <quote who="Matthias Andree">I recall that vger deferred
incoming mail because it was short of disk space some days ago. No inbound
mails, no outbound mails.</quote> David S. Miller explained, <quote
who="David S. Miller">There was a disk space issue on vger, this clogged up
the queue for about 12 hours yesterday.</quote></p>

</section>

<section
  title="Relaxing Of US Crypto Laws"
  subject="2.4 and Strong Cryptography..."
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0001_02/msg00721.html"
  posts="15"
  startdate="11 Jan 2000 00:00:00 -0800"
  enddate="17 Jan 2000 00:00:00 -0800"
>
<topic>BSD: OpenBSD</topic>
<topic>Patents</topic>

<p>Michael H. Warfield gave a pointer to a draft <a
href="http://www.cdt.org/crypto/admin/991217draftregs.shtml">Encryption
Export Regulations</a>. He quoted the paragraphs relevant to Open Source:</p>

<blockquote>

 SEC. 740.13 TECHNOLOGY AND SOFTWARE &lt; UNRESTRICTED (TSU)<br />

   (e) Unrestricted Encryption Source Code

<p>
<ol>

<li>   Encryption source code controlled under 5D002 which would be
       considered publicly available under Section 734.3(b)(3) and which is
       not subject to an express agreement for the payment of a licensing
       fee or royalty for further commercial production or sale of any
       product developed with the source code is released from EI controls
       and may be exported or re-exported without review under License
       Exception TSU, provided you have submitted written notification to
       BXA of the Internet address (e.g. URL) or a copy of the source code
       by the time of export. Submit the notification to BXA and send a copy
       to ENC Encryption Request Coordinator (see Section 740.17(g)(5) for
       mailing addresses).</li>

<li>   You may not knowingly export or re-export source code or products
       developed with this source code to Cuba, Iran, Iraq, Libya, North
       Korea, Sudan or Syria.</li>

<li>   Posting of the source code on the Internet (e.g., FTP or World Wide
       Web site) where the source code may be downloaded by anyone would not
       establish "knowledge" as described in subparagraph (2) of this
       section. In addition, such posting would not trigger "red flags"
       necessitating the affirmative duty to inquire under the "Know Your
       Customer" guidance provided in Supplement No. 3 to Part 732.</li>

</ol>
</p>

</blockquote>

<p>He added:</p>

<quote who="Michael H. Warfield">

<p>You'll notice that the second paragraph is
the stock "restricted countries" list and the third paragraph is a "safe
haven" clause for ftp/http posting.</p>

<p>This basically says that crypto source code which is unencumbered may be
exported merely by notifying them of the URL (mailto URL's????) where it is
available from. No review, no approval, no license, no key length silliness,
and no inherited encumberances. :-)</p>

<p>I won't post the whole $#@$#@ thing (since you can read it at the CDT site
anyways) but for things like "Idea" and "RSA", which ARE encumbered by
patents, similar clauses exist at 740.17(a)(5) which say basically the same
thing.</p>

<p>This is scheduled to become finalized on January 14.  Everything I have
heard indicates that there will be no significant changes at this point and
these will be the new regulations and will be finalized on schedule.</p>

<p>If these regs get finalized and are in the form we now expect them to be in,
can we get the paperwork filled and get IPSEC (and other crypto goodies like
ppdd) into the 2.4 kernel? KLIPS (from IPSEC) would be a wonderful win! That
would put us up with OpenBSD with integrated IPSEC (OK, IKE, aka pluto,
still needs improvement - but that's not a kernel issue).</p>

<p>We can also begin to lobby the distro makers for bundling hardened crypto
like PGP, GPG, CFS, TCFS, SSH, etc, etc, etc, as quickly as possible. The
faster it's there and the faster it spreads the better we can seal this deal
and make it done!</p>

</quote>

</section>

</kc>
