<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="181" date="25 Aug 2002 23:00:00 -0800" />

<stats posts="1483" size="7515" contrib="409" multiples="210" lastweek="149">

<person posts="83" size="241" who="Alan Cox " />
<person posts="65" size="264" who="Ingo Molnar " />
<person posts="49" size="146" who="Linus Torvalds " />
<person posts="43" size="385" who="&quot;Kendrick M. Smith&quot; " />
<person posts="36" size="154" who="Andrew Morton " />
<person posts="36" size="116" who="&quot;H. Peter Anvin&quot; " />
<person posts="31" size="128" who="Andre Hedrick " />
<person posts="21" size="57" who="Christoph Hellwig " />
<person posts="20" size="55" who="Daniel Phillips " />
<person posts="16" size="78" who="William Lee Irwin III " />
<person posts="16" size="74" who="Greg KH " />
<person posts="16" size="65" who="Rik van Riel " />
<person posts="16" size="49" who="Benjamin LaHaise " />
<person posts="15" size="135" who="Rusty Russell " />
<person posts="15" size="44" who="Jamie Lokier " />
<person posts="14" size="152" who="john stultz " />
<person posts="12" size="36" who="Erik Andersen " />
<person posts="12" size="35" who="Adrian Bunk " />
<person posts="11" size="211" who="Alan Cox " />
<person posts="11" size="167" who="Anton Altaparmakov " />
<person posts="11" size="45" who="Alexander Viro " />
<person posts="11" size="38" who="Oliver Xymoron " />
<person posts="11" size="30" who="Willy Tarreau " />
<person posts="11" size="26" who="&quot;David S. Miller&quot; " />
<person posts="10" size="86" who="James Morris " />
<person posts="10" size="42" who="Denis Vlasenko " />
<person posts="10" size="30" who="&quot;Richard B. Johnson&quot; " />
<person posts="10" size="29" who="&quot;Martin J. Bligh&quot; " />
<person posts="10" size="28" who="Russell King " />
<person posts="10" size="28" who="Thunder from the hill " />
<person posts="10" size="28" who="Pavel Machek " />
<person posts="9" size="62" who="Vojtech Pavlik " />
<person posts="9" size="48" who="Dave Hansen " />
<person posts="9" size="34" who="Gilad Ben-Yossef " />
<person posts="9" size="24" who="Matti Aarnio " />
<person posts="8" size="80" who="Matthew Dobson " />
<person posts="8" size="41" who="Adam Kropelin " />
<person posts="8" size="38" who="&quot;Anthony Russo., a.k.a. Stupendous Man&quot; " />
<person posts="8" size="36" who="Mel " />
<person posts="7" size="141" who="Patricia Gaughen " />
<person posts="7" size="63" who="Markus Plail " />
<person posts="7" size="58" who="Muli Ben-Yehuda " />
<person posts="7" size="23" who="Larry McVoy " />
<person posts="7" size="20" who="Scott Bronson " />
<person posts="7" size="14" who="" />
<person posts="6" size="103" who="&quot;Adam J. Richter&quot; " />
<person posts="6" size="60" who="Ruth Ivimey-Cook " />
<person posts="6" size="38" who="James Bottomley " />
<person posts="6" size="29" who="Patrick Mochel " />
<person posts="6" size="26" who="&quot;H. J. Lu&quot; " />
<person posts="6" size="23" who="Justin Heesemann " />
<person posts="6" size="23" who="Jens Axboe " />
<person posts="6" size="23" who="" />
<person posts="6" size="22" who="Samuel Flory " />
<person posts="6" size="22" who="Trond Myklebust " />
<person posts="6" size="19" who="&quot;H.Rosmanith (Kernel Mailing List)&quot; " />
<person posts="6" size="19" who="Andreas Dilger " />
<person posts="6" size="15" who="Jeff Garzik " />
<person posts="5" size="43" who="Adam Belay " />
<person posts="5" size="39" who="Matthew Wilcox " />
<person posts="5" size="32" who="Meelis Roos " />
<person posts="5" size="27" who="Christian Reis " />
<person posts="5" size="26" who="Paul Mackerras " />
<person posts="5" size="25" who="Andrea Arcangeli " />
<person posts="5" size="24" who="Jeff Dike " />
<person posts="5" size="18" who="Stephane Wirtel " />
<person posts="5" size="18" who="Paul Larson " />
<person posts="5" size="15" who="" />
<person posts="5" size="15" who="Stas Sergeev " />
<person posts="5" size="14" who="Richard Gooch " />
<person posts="5" size="13" who="Dave McCracken " />
<person posts="5" size="13" who="Heinz Diehl " />
<person posts="5" size="13" who="Andries Brouwer " />
<person posts="5" size="13" who="&quot;Imran Badr&quot; " />
<person posts="5" size="12" who="Dax Kelson " />
<person posts="4" size="63" who="Roger Gammans " />
<person posts="4" size="56" who="Petr Vandrovec " />
<person posts="4" size="39" who="Gregoire Favre " />
<person posts="4" size="37" who="Reid Sutherland " />
<person posts="4" size="24" who="Eric Gillespie " />
<person posts="4" size="18" who="&quot;Christian Ehrhardt&quot; " />
<person posts="4" size="18" who="Marcelo Tosatti " />
<person posts="4" size="18" who="Keith Owens " />
<person posts="4" size="15" who="Antti Salmela " />
<person posts="4" size="14" who="Bhavana Nagendra " />
<person posts="4" size="14" who="&quot;Petr Vandrovec&quot; " />
<person posts="4" size="13" who="Luca Barbieri " />
<person posts="4" size="12" who="David Weinehall " />
<person posts="4" size="12" who="Thomas Molina " />
<person posts="4" size="12" who="Hugh Dickins " />
<person posts="4" size="12" who="" />
<person posts="4" size="11" who="&quot;Thomas Munck Steenholdt&quot; " />
<person posts="4" size="11" who="Steven Cole " />
<person posts="4" size="11" who="Richard Zidlicky " />
<person posts="4" size="11" who="Oleg Drokin " />
<person posts="4" size="10" who="Mikael Pettersson " />
<person posts="4" size="9" who="Jean Delvare " />
<person posts="4" size="9" who="Thunder from the hill " />
<person posts="4" size="8" who="&quot;Garst R. Reese&quot; " />
<person posts="3" size="105" who=" (Hans Reiser)" />
<person posts="3" size="49" who="Matthias Andree " />
<person posts="3" size="47" who="Lucio Maciel " />
<person posts="3" size="47" who="Marc Giger " />
<person posts="3" size="46" who="Daniel Jacobowitz " />
<person posts="3" size="40" who="Ravikiran G Thirumalai " />
<person posts="3" size="37" who="Steffen Moser " />
<person posts="3" size="36" who="Emmanuel Fleury " />
<person posts="3" size="19" who="Frank Davis " />
<person posts="3" size="12" who="Ivan Kokshaysky " />
<person posts="3" size="12" who="" />
<person posts="3" size="11" who="" />
<person posts="3" size="11" who="&quot;Kevin P. Fleming&quot; " />
<person posts="3" size="11" who="&quot;Grover, Andrew&quot; " />
<person posts="3" size="11" who="Matt Bernstein " />
<person posts="3" size="10" who="george anzinger " />
<person posts="3" size="10" who="Corey Minyard " />
<person posts="3" size="9" who="James Bottomley " />
<person posts="3" size="9" who="" />
<person posts="3" size="9" who="David Mosberger " />
<person posts="3" size="9" who="Ivan Gyurdiev " />
<person posts="3" size="9" who="Jean Tourrilhes " />
<person posts="3" size="9" who="Kai Germaschewski " />
<person posts="3" size="9" who="Daniel Egger " />
<person posts="3" size="8" who="&quot;Skidley&quot; " />
<person posts="3" size="8" who=" (Linus Torvalds)" />
<person posts="3" size="8" who="Helge Hafting " />
<person posts="3" size="8" who="&quot;Miquel van Smoorenburg&quot; " />
<person posts="3" size="8" who="Mike Galbraith " />
<person posts="3" size="8" who="Gabriel Paubert " />
<person posts="3" size="8" who="&quot;Randy.Dunlap&quot; " />
<person posts="3" size="8" who="&quot;Jim Roland&quot; " />
<person posts="3" size="7" who="Roman Zippel " />
<person posts="3" size="7" who="Robert Love " />
<person posts="3" size="7" who="Jean-Luc Coulon " />
<person posts="3" size="7" who=" (Klaus Dittrich)" />
<person posts="3" size="7" who="David Woodhouse " />
<person posts="3" size="7" who="Ralf Baechle " />
<person posts="3" size="7" who="Jurgen Kramer " />
<person posts="3" size="7" who="DervishD " />
<person posts="3" size="6" who="Mike Dresser " />
<person posts="2" size="30" who="Art Haas " />
<person posts="2" size="27" who="Darkhorse WinterWolf " />
<person posts="2" size="25" who="" />
<person posts="2" size="24" who="" />
<person posts="2" size="22" who="Sid Boyce " />
<person posts="2" size="22" who="Mauricio Pretto " />
<person posts="2" size="17" who="Andreas Tscharner " />
<person posts="2" size="16" who="David Wilson " />
<person posts="2" size="14" who="Marc-Christian Petersen " />
<person posts="2" size="14" who="Aaron Caskey " />
<person posts="2" size="13" who="Christoph Hellwig " />
<person posts="2" size="12" who="Jesse Barnes " />
<person posts="2" size="11" who="" />
<person posts="2" size="11" who="Shane " />
<person posts="2" size="10" who="&quot;Timothy D. Witham&quot; " />
<person posts="2" size="9" who="" />
<person posts="2" size="9" who="&quot;Vamsi Krishna S .&quot; " />
<person posts="2" size="9" who="&quot;Stuart MacDonald&quot; " />
<person posts="2" size="9" who="&quot;Mala Anand&quot; " />
<person posts="2" size="8" who="&quot;Nandakumar  NarayanaSwamy&quot; " />
<person posts="2" size="8" who=" (Florin Iucha)" />
<person posts="2" size="8" who="David Lang " />
<person posts="2" size="8" who="Steffen Persvold " />
<person posts="2" size="7" who="Roger Luethi " />
<person posts="2" size="7" who="M G Berberich " />
<person posts="2" size="7" who="James Cleverdon " />
<person posts="2" size="6" who="&quot;Ph. Marek&quot; " />
<person posts="2" size="6" who="&quot;Misha Alex&quot; " />
<person posts="2" size="6" who="Agust Karlsson " />
<person posts="2" size="6" who="Jan Hudec " />
<person posts="2" size="6" who="Ricardo Galli " />
<person posts="2" size="6" who="Jacek =?iso-8859-2?Q?Pop=B3awski?= " />
<person posts="2" size="6" who="Brian Wellington " />
<person posts="2" size="6" who="John Jones " />
<person posts="2" size="6" who="Rogier Wolff " />
<person posts="2" size="6" who="Krzysztof Halasa " />
<person posts="2" size="6" who="&quot;Mohamed Ghouse , Gurgaon&quot; " />
<person posts="2" size="6" who="Tom Rini " />
<person posts="2" size="5" who="&quot;Feldman, Scott&quot; " />
<person posts="2" size="5" who="Peter Hicks " />
<person posts="2" size="5" who="Mukesh Rajan " />
<person posts="2" size="5" who="Geert Uytterhoeven " />
<person posts="2" size="5" who="Matt Simonsen " />
<person posts="2" size="5" who="Tomas Szepe " />
<person posts="2" size="5" who="Marek Michalkiewicz " />
<person posts="2" size="5" who="Andrew Rodland " />
<person posts="2" size="5" who="Martin Mares " />
<person posts="2" size="5" who="Dana Lacoste " />
<person posts="2" size="5" who="&quot;Jason Zebchuk&quot; " />
<person posts="2" size="5" who="Bill Huey (Hui) " />
<person posts="2" size="5" who="Francisco Javier Fernandez " />
<person posts="2" size="5" who="John Coppens " />
<person posts="2" size="5" who="J Sloan " />
<person posts="2" size="5" who="Sean Neakums " />
<person posts="2" size="5" who="Alexander Kellett " />
<person posts="2" size="5" who="&quot;David D. Hagood&quot; " />
<person posts="2" size="5" who="Benjamin Geer " />
<person posts="2" size="5" who="Stanislav Brabec " />
<person posts="2" size="5" who=" (Eric W. Biederman)" />
<person posts="2" size="5" who="marius aamodt eriksen " />
<person posts="2" size="5" who="Mike Galbraith " />
<person posts="2" size="5" who="Rusty Trivial Russell " />
<person posts="2" size="5" who="Bill Davidsen " />
<person posts="2" size="5" who="" />
<person posts="2" size="5" who="&quot;Justin T. Gibbs&quot; " />
<person posts="2" size="4" who="&quot;M.L.PrasannaK.R.&quot; " />
<person posts="2" size="4" who="Anders Gustafsson " />
<person posts="2" size="4" who="Gunther Mayer " />
<person posts="2" size="4" who="Venkat Raghu " />
<person posts="2" size="4" who="&quot;Dmitry N. Hramtsov&quot; " />
<person posts="1" size="77" who="Nuitari " />
<person posts="1" size="62" who="&quot;Tommy Faasen&quot; " />
<person posts="1" size="60" who="Mart van de Wege " />
<person posts="1" size="47" who="&quot;Partha Narayanan&quot; " />
<person posts="1" size="46" who="Albert Cranford " />
<person posts="1" size="44" who="Erich Focht " />
<person posts="1" size="37" who="Clemens 'Gullevek' Schwaighofer " />
<person posts="1" size="34" who="Bob Miller " />
<person posts="1" size="26" who="Maneesh Soni " />
<person posts="1" size="24" who="Michael Dreher " />
<person posts="1" size="22" who="Billy Tiemann " />
<person posts="1" size="20" who="&quot;Tomasz Torcz, BG&quot; " />
<person posts="1" size="19" who="Prasanna Subash " />
<person posts="1" size="16" who="Andy Smith " />
<person posts="1" size="13" who="" />
<person posts="1" size="13" who="&quot;Seth, Rohit&quot; " />
<person posts="1" size="12" who="&quot;Guillaume Boissiere&quot; " />
<person posts="1" size="12" who="&quot;Nakajima, Jun&quot; " />
<person posts="1" size="11" who="Juergen Sawinski " />
<person posts="1" size="10" who="&quot;Loebbert, Johannes&quot; " />
<person posts="1" size="9" who="Stephen Cameron " />
<person posts="1" size="9" who="" />
<person posts="1" size="9" who="Nagy Tibor " />
<person posts="1" size="7" who="Karsten 'soohrt' Desler " />
<person posts="1" size="6" who="Jurriaan " />
<person posts="1" size="6" who="Scott Kaplan " />
<person posts="1" size="6" who="" />
<person posts="1" size="6" who="Andre Hedrick " />
<person posts="1" size="6" who="Sven Koch " />
<person posts="1" size="6" who="Tony Spinillo " />
<person posts="1" size="6" who="&quot;Downey, Brian&quot; " />
<person posts="1" size="6" who="Nuno Monteiro " />
<person posts="1" size="5" who="Edouard Gomez " />
<person posts="1" size="5" who="Rupert Eibauer " />
<person posts="1" size="5" who="Matthew Hall " />
<person posts="1" size="4" who="Greg Louis " />
<person posts="1" size="4" who="Greg KH " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="Pollei " />
<person posts="1" size="4" who="Hans Reiser " />
<person posts="1" size="4" who="Eyal Lebedinsky " />
<person posts="1" size="4" who="Ed Tomlinson " />
<person posts="1" size="4" who="Kronos " />
<person posts="1" size="4" who=" (Grendel)" />
<person posts="1" size="4" who="&quot;WEBSYSTEM&quot; " />
<person posts="1" size="4" who="Billy Tiemann " />
<person posts="1" size="4" who="mgross " />
<person posts="1" size="4" who="&quot;Cress, Andrew R&quot; " />
<person posts="1" size="4" who="jw schultz " />
<person posts="1" size="4" who="Albert Cranford " />
<person posts="1" size="4" who="Greg Banks " />
<person posts="1" size="4" who="Kristian Peters " />
<person posts="1" size="3" who="Thomas Munck Steenholdt " />
<person posts="1" size="3" who="Silvio Cesare " />
<person posts="1" size="3" who="James Bourne " />
<person posts="1" size="3" who="Gerd Knorr " />
<person posts="1" size="3" who="Roman Dementiev " />
<person posts="1" size="3" who="Rob Speer " />
<person posts="1" size="3" who="&quot;Peter Plantagenet&quot; " />
<person posts="1" size="3" who="Nivedita Singhvi " />
<person posts="1" size="3" who="&quot;Brian M. Sutin&quot; " />
<person posts="1" size="3" who="Arnaldo Carvalho de Melo " />
<person posts="1" size="3" who="Ingo Saitz " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="OGAWA Hirofumi " />
<person posts="1" size="3" who="&quot;ashwani kumar mehra&quot; " />
<person posts="1" size="3" who="A Guy Called Tyketto " />
<person posts="1" size="3" who="Chris Friesen " />
<person posts="1" size="3" who="Bob Kruger " />
<person posts="1" size="3" who="John Lenton " />
<person posts="1" size="3" who="Roland Kuhn " />
<person posts="1" size="3" who="&quot;Dan Davis&quot; " />
<person posts="1" size="3" who="&quot;Dhr N. Van Alphen&quot; " />
<person posts="1" size="3" who="Clint Byrum " />
<person posts="1" size="3" who="Torsten Wolf " />
<person posts="1" size="3" who="Jan-Benedict Glaw " />
<person posts="1" size="3" who="&quot;idris&quot; " />
<person posts="1" size="3" who="Nathan Straz " />
<person posts="1" size="3" who="John Weber " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Marc Schoenborn " />
<person posts="1" size="3" who="Gianni Tedesco " />
<person posts="1" size="3" who="Eli Carter " />
<person posts="1" size="3" who="CaT " />
<person posts="1" size="3" who="Arkadiusz Miskiewicz " />
<person posts="1" size="3" who="Jeff Chua " />
<person posts="1" size="3" who="Javier Marcet " />
<person posts="1" size="3" who="Paul Jakma " />
<person posts="1" size="3" who="&quot;Mark H. Wood&quot; " />
<person posts="1" size="3" who="Jakob Oestergaard " />
<person posts="1" size="3" who="Andy Polyakov " />
<person posts="1" size="3" who="Alex Riesen " />
<person posts="1" size="3" who="Dan Borlovan " />
<person posts="1" size="3" who="&quot;Magnus Naeslund(w)&quot; " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="&quot;Mike Black&quot; " />
<person posts="1" size="3" who="&quot;Barry K. Nathan&quot; " />
<person posts="1" size="3" who="=?iso-8859-1?Q?J=F6rg_Spilker?= " />
<person posts="1" size="3" who="Tim Waugh " />
<person posts="1" size="3" who="&quot;Chad Young&quot; " />
<person posts="1" size="3" who="Larry Butler " />
<person posts="1" size="2" who="&quot;Maksim (Max) Krasnyanskiy&quot; " />
<person posts="1" size="2" who="Pete Zaitcev " />
<person posts="1" size="2" who="Sam Ravnborg " />
<person posts="1" size="2" who="Andreas Steinmetz " />
<person posts="1" size="2" who="Philipp Matthias Hahn " />
<person posts="1" size="2" who="Alex Pelts " />
<person posts="1" size="2" who="Michael Knigge " />
<person posts="1" size="2" who="&quot;Matthew D. Pitts&quot; " />
<person posts="1" size="2" who=" (bill davidsen)" />
<person posts="1" size="2" who="Hiroshi Takekawa " />
<person posts="1" size="2" who="Axel Siebenwirth " />
<person posts="1" size="2" who="Chris Wright " />
<person posts="1" size="2" who=" (Kai Henningsen)" />
<person posts="1" size="2" who="Rob Myers " />
<person posts="1" size="2" who="Alexander Hoogerhuis " />
<person posts="1" size="2" who="Lars Ellenberg " />
<person posts="1" size="2" who="Jason L Tibbitts III " />
<person posts="1" size="2" who="Tom Miller " />
<person posts="1" size="2" who="&quot;J. Bruce Fields&quot; " />
<person posts="1" size="2" who="Rick Lindsley " />
<person posts="1" size="2" who="Kasper Dupont " />
<person posts="1" size="2" who="Dave Jones " />
<person posts="1" size="2" who="Steve Hill " />
<person posts="1" size="2" who="Holger Schurig " />
<person posts="1" size="2" who="Troy Wilson " />
<person posts="1" size="2" who="David Schwartz " />
<person posts="1" size="2" who="Manik Raina " />
<person posts="1" size="2" who="Dave Wilson " />
<person posts="1" size="2" who="earendil " />
<person posts="1" size="2" who="David Rees " />
<person posts="1" size="2" who="Kevin Burtch " />
<person posts="1" size="2" who="Jan Marek " />
<person posts="1" size="2" who="Amol Lad " />
<person posts="1" size="2" who="Justyna =?iso-8859-2?Q?Bia=B3a?= " />
<person posts="1" size="2" who="&quot;Lahti Oy&quot; " />
<person posts="1" size="2" who="Kelsey Hudson " />
<person posts="1" size="2" who="John Levon " />
<person posts="1" size="2" who="Felipe W Damasio " />
<person posts="1" size="2" who="Alex Romosan " />
<person posts="1" size="2" who="Jonathan Hudson " />
<person posts="1" size="2" who="Joe Thornber " />
<person posts="1" size="2" who="Skip Ford " />
<person posts="1" size="2" who="&quot;Murray J. Root&quot; " />
<person posts="1" size="2" who="Arador " />
<person posts="1" size="2" who="&quot;Peter T. Breuer&quot; " />
<person posts="1" size="2" who="Chris Chabot " />
<person posts="1" size="2" who="Ralf Baechle " />
<person posts="1" size="2" who="Alastair Stevens " />
<person posts="1" size="2" who="Brian Pawlowski " />
<person posts="1" size="2" who="henrique " />
<person posts="1" size="2" who="&quot;nada shalabi&quot; " />
<person posts="1" size="2" who="Rahul Karnik " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="DevilKin " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Milton Miller " />
<person posts="1" size="2" who="Meelis Roos " />
<person posts="1" size="2" who="&quot;Carlos Velasco&quot; " />
<person posts="1" size="2" who="&quot;sanket rathi&quot; " />
<person posts="1" size="2" who="Mark Hounschell " />
<person posts="1" size="2" who="=?iso-8859-1?q?Joerg=20Pommnitz?= " />
<person posts="1" size="2" who="Peter Hicks " />
<person posts="1" size="2" who="Kai Germaschewski " />
<person posts="1" size="2" who="David Gibson " />
<person posts="1" size="2" who="&quot;Rob Turk&quot; " />
<person posts="1" size="2" who="Mathias Gygax " />
<person posts="1" size="2" who="Ian Eure " />
<person posts="1" size="2" who="Rohan Deshpande " />
<person posts="1" size="2" who="Peter Chubb " />
<person posts="1" size="2" who="Rob Radez " />
<person posts="1" size="2" who="&quot;Albert D. Cahalan&quot; " />
<person posts="1" size="2" who="Scorpion " />
<person posts="1" size="2" who="PAUL BENNETT " />
<person posts="1" size="2" who="Bill Davidsen " />
<person posts="1" size="2" who="Xuehua Chen " />
<person posts="1" size="2" who="Martin Hammer " />
<person posts="1" size="2" who="&quot;Joseph&quot; " />
<person posts="1" size="2" who="Andi Kleen " />
<person posts="1" size="2" who="zhengchuanbo " />
<person posts="1" size="2" who="usb " />
<person posts="1" size="2" who="Alex Davis " />
<person posts="1" size="2" who="Kallol Biswas " />
<person posts="1" size="2" who="Krzysztof Oledzki " />
<person posts="1" size="2" who="Arnvid Karstad " />
<person posts="1" size="2" who="&quot;Sirius Black&quot; " />
<person posts="1" size="2" who="Andrew Friedley " />
<person posts="1" size="2" who="=?ISO-8859-1?Q?Martin_Wahl=E9n?= " />
<person posts="1" size="1" who="Chuck Lever " />
<person posts="1" size="1" who="Oliver Neukum " />
<person posts="1" size="1" who="Baris Yesildere " />
<person posts="1" size="1" who="Jack Howarth " />
<person posts="1" size="1" who="&quot;Game PC&quot; " />
<person posts="1" size="1" who="Krzysiek Taraszka " />
<person posts="1" size="1" who="Bernard yap " />
<person posts="1" size="1" who="Mario Vanoni " />
<person posts="1" size="1" who="" />

</stats>

<section
  title="Some 2.5 Performance Patches And Benchmarks"
  subject="[patch 1/21] random fixes"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.1/0626.html"
  posts="21"
  startdate="10 Aug 2002 23:38:19 -0800"
  enddate="14 Aug 2002 00:35:15 -0800"
>
<topic>Big O Notation</topic>
<topic>Disks: IDE</topic>
<topic>FS: ext2</topic>
<topic>FS: ext3</topic>
<topic>FS: sysfs</topic>
<topic>SMP</topic>

<p>Andrew Morton posted a patch and explained:</p>

<quote who="Andrew Morton">

<p>Sorry, but there's a ton of stuff here.  It ends up as a 4600 line
diff.  Some code dating back to 2.5.24.  It's almost all performance
work and it has been very painful getting its effectiveness tested
on the big machines; the main problem has been getting them booting  
2.5 at all.  The results still are not as conclusive as I'd like,
but the signs are good, and there are no other proposals around to
fix these problems.</p>

<p>This one is mainly a resend.</p>

<p>

<ul>

<li>I changed the sector_t thing in max_block to use davem's approach.
  I agree with Anton, but making it explicit doesn't hurt.</li>

<li>Remove a dead comment in copy_strings.</li>

</ul>

</p>

<p>Old stuff:</p>

<p>

<ul>

<li>Remove the IO error warning in end_buffer_io_sync().  Failed READA
  attempts trigger it.</li>

<li>

<p>  Emit a warning when an ext2 is mounting an ext3 filesystem.</p>

<p>  We have had quite a few problem reports related to this, mainly
  arising from initrd problems.  And mount(8) tends to report the
  fstype from /etc/fstab rather than reporting what has really
  happened.</p>

</li>

</ul>

</p>

<p>Fixes some bogosity which I added to max_block():</p>

<p>

<ul>

<li>`size' doesn't need to be sector_t</li>

<li>`retval' should not be initialised to "~0UL" because that is
  0x00000000ffffffff with 64-bit sector_t.</li>

<li>Allocate task_structs with GFP_KERNEL, as discussed.</li>

<li>Convert the EXPORT_SYMBOL for generic_file_direct_IO() to
  EXPORT_SYMBOL_GPL.  That was only exported as a practicality for the
  raw driver.</li>

<li>

<p>  Make the loop thread run balance_dirty_pages() after dirtying the
  backing file.  So it will perform writeback of the backing file when
  dirty memory levels are high.  Export balance_dirty_pages to GPL
  modules for this.</p>

<p>  This makes loop work a lot better - I suspect it broke when callers
  of balance_dirty_pages() started writing back only their own queue.</p>

<p>  There are many page allocation failures under heavy loop writeout.
  Coming from blk_queue_bounce()'s allocation from the page_pool
  mempool.  So...</p>

</li>

<li>Disable page allocation warnings around the initial atomic
  allocation attempt in mempool_alloc() - the one where __GFP_WAIT and
  __GFP_IO were turned off.  That one can easily fail.</li>

<li>Add some commentary in block_write_full_page()</li>

</ul>

</p>

</quote>

<p>After a few posts, Adam Kropelin replied:</p>

<quote who="Adam Kropelin">

<p>I did a bit of testing since I've always thought 2.4 (and 2.5) writeout
behavior left something to be desired. Testbed was a SMP x86 (2xPPro-200)
with 160 MB of RAM. I used everyone's favorite 2.5 scapegoat: IDE, with a
single not-very- fast IBM disk. Filesystem was ext3 in data=ordered mode. Test
workload was an inbound (from the point of view of the system under test)
FTP transfer of a 600 MB iso image. All test runs were from a clean boot
with all unnecessary services shut down.</p>

<p>Results (average of 4 runs):</p>

<pre>2.5.31-akpm: 2m 43s
2.5.31:      2m 33s
2.4.19:      2m 18s</pre>

<p>`vmstat 1` shows some differences, expecially with respect to 2.4
vs. 2.5. In about 40% of the cases when the bo drops to (near) 0, the machine
stalled (FTP transfer halted, vmstat output paused, etc.). With 2.5.31-akpm,
the stalls were about 3-4 seconds in length. With 2.5.31, the stalls were
of the same duration, but slightly less frequent. With 2.4.19, the stalls
were very frequent (closer to 70% of the time bo hit 0), but were only 1-2
seconds in duration.</p>

<p>Below are representative samples of `vmstat 1` for each kernel during
the test.  (Note that the low cache usage in the 2.5.31 sample is because
the snapshot is from early in the run when the cache is still filling.)</p>

</quote>

<p>Andrew replied:</p>

<quote who="Andrew Morton">

<p>yes.  For this workload (10 mbyte/sec ftp transfer onto a >20 meg/sec
disk) the application should never block on IO - all writeback should happen
via pdflush.</p>

<p>2.4 starts background writeback at 30% dirty and synchronous writeback
at 60% dirty.</p>

<p>2.5 starts background writeback at 40% dirty and synchronous writeback
at 50% dirty.</p>

<p>You can make 2.5 use the 2.4 settings with</p>

<p>cd /proc/sys/vm<br />
echo 30 &gt; dirty_background_ratio<br />
echo 60 &gt; dirty_async_ratio<br />
echo 70 &gt; dirty_sync_ratio</p>

<p>and I expect you'll find that fixes it up.  Setting dirty_background_ratio
to 10% will make it even better.  But it will hurt dbench numbers at certain
client counts, which is a national emergency.</p>

<p>Sigh.  I don't know what the right numbers are.  There aren't any;
that's the problem with magic numbers.  That part of the kernel is making
writeback and throttling decisions in total ignorance of the overall state
of the system.</p>

<p>Worst comes to worst, we can set the 2.5 knobs at the same level as the
2.4 ones, but I'd rather prefer that we can some up with something dynamic.</p>

<p>In fact, I'd be inclined to set the background ratio much lower than 2.4,
and to hell with dbench.  Because the lower level is better for real programs,
as you've observed.</p>

</quote>

<p>Adam replied that Andrew's suggested numbers brought the patch in line with
vanilla 2.5.31 speeds, but that both kernels still tested slower than 2.4.19.
Andrew said the numbers really sweetened things up on his own box, and couldn't
explain the discrepancy. They went back and forth on it for a few posts, until
Adam posted some information on his disk speed. Andrew sputtered:</p>

<quote who="Andrew Morton">

<p>gack.  I've seen pencils which can write faster than that.</p>

<p>So your wirespeed actually exceeds the disk speed.  That changes things.</p>

<p>The kernel *has* to stall the generator of dirty data.  We can make
the stalls shorter, and more frequent.  Go into drivers/block/ll_rw_blk.c
and see where it's initialising batch_requests.  Just change it to</p>

<p>        batch_requests = 1;</p>

<p>batch_requests needs to die anyhow...</p>

<p>And in fs/mpage.c, set RATELIMIT_PAGES to 16.</p>

<p>The application has to block, but the disk should certainly never
fall idle.  I'll play with this a bit.  IDE ceased to be an option
in 2.5.30, which does not aid this effort.</p>

</quote>

<p>It also turned out that Adam had been running with ext3 instead of ext2, as
he'd reported. He reported:</p>

<quote who="Adam Kropelin">

<p>*Actually* switching to ext2 (rather than just pretending) made a
tremendous difference. New numbers:</p>

<p>2.5.31-stock: 1m 49s<br />
2.5.31-akpm: 1m 50s<br />
2.4.19-stock: 1m 34s</p>

<p>...but, applying the writeout threshold settings you suggested:</p>

<p>2.5.31-stock: 1m 34s<br />
2.5.31-akpm: 1m 34s</p>

<p>(That's with dirty_background at 30%; 10% turned in the same numbers
as 30% did.)</p>

<p>Presumably with the disk as the bottleneck, the -akpm changes aren't
expected to do much. At least they're not degrading anything.</p>

</quote>

</section>

<section
  title="Status Of klibc And Logging"
  subject="klibc and logging"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.1/1150.html"
  posts="24"
  startdate="12 Aug 2002 23:12:10 -0800"
  enddate="20 Aug 2002 06:45:01 -0800"
>
<topic>FS: NFS</topic>
<topic>FS: initramfs</topic>
<topic>FS: ramfs</topic>
<topic>Klibc</topic>

<mention>Miquel van Smoorenburg</mention>
<mention>Andrew Morton</mention>

<p>H. Peter Anvin felt that klibc was almost complete, though he imagined
plenty of bugs would turn up once folks started really pounding on it. But he
added, <quote who="H. Peter Anvin">However, I'm wondering what to do about
logging.  Kernel log messages get stored away until klogd gets started,
but early userspace may need some way to log messages -- and syslog is
obviously not running.  The easiest way to do this would probably be to
be able to write to /proc/kmsg (which probably really should be /dev/kmsg)
and push messages onto the kernel's message queue; but we could also have
a dedicated location in the initramfs for writing logs, and do it all in
userspace.  In the latter case there needs to be a convention to make sure
this file is actually present in the namespace at the time syslog starts,
and of course syslog needs to know about it...</quote></p>

<p>Erik Andersen suggested simply writing to /dev/console, adding, <quote
who="Erik Andersen">If someone is unable to read from that (VGA, serial,
network console, whatever) while trying to set up an NFS-root, they get to
keep both pieces.</quote></p>

<p>Elsewhere, Miquel van Smoorenburg suggested using /dev/shm/log, but
H. Peter said that it <quote who="H. Peter Anvin">Requires too much to work
before it's can be made available.</quote> But he added, <quote who="H. Peter
Anvin">Andrew Morton sent me a proposed patch last night which adds a klogctl
(a.k.a. sys_syslog) which does a printk() from userspace.  It was less than
10 lines; i.e. probably worth it.  I have hooked this up to syslog(3) in
klibc, although the code is not checked in yet.</quote> But Oliver Xymoron
thought this was overkill. He added, <quote who="Oliver Xymoron">it's got
some interesting security implications - only root should be able to flood
the kernel message queue, but non-root should be able to syslog, even from
early userspace.</quote></p>

</section>

<section
  title="New Thread Creation Syscall"
  subject="[patch] clone_startup(), 2.5.31-A0"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.1/1233.html"
  posts="32"
  startdate="13 Aug 2002 07:09:03 -0800"
  enddate="15 Aug 2002 13:24:04 -0800"
>
<topic>Version Control</topic>

<p>Ingo Molnar posted a patch and announced:</p>

<quote who="Ingo Molnar">

<p>the attached patch implements a new syscall on x86, clone_startup().
The parameters are:</p>

<p>        clone_startup(fn, child_stack, flags, tls_desc, pid_addr)</p>

<p>with the help of this syscall glibc's next-generation pthreads code is
able to perform single-syscall thread creation: clone_startup() sets up the
child TLS and writes the child PID back into userspace. (which address points
to the thread control block.).</p>

<p>the child PID has to be written back because otherwise the parent and
the child would have to do expensive and unrobust synchronization. The
first instruction the child executes might as well be a signal handler, and
glibc code needs the TLS and the PID of the thread. There are a number of
workarounds in userspace that can solve this problem without clone_startup(),
but each of them has disadvantages:</p>

<p>

<ul>

<li>the parent might disable all signals across clone() calls. This adds 3
extra syscalls: 2 in the parent, 1 in the child. The old LinuxThreads code
did something like this.</li>

<li>glibc could check whether the PID is available and call getpid() if not,
but this introduces runtime overhead.</li>

<li>glibc might define a wrapper function around signal handlers - this is
both unrobust and might cause compatibility problems.</li>

<li>glibc could use a mutex with the parent to let the parent fill in the
PID. This causes two extra context-switches if the child is executed first
after clone().</li>

</ul>

</p>

<p>and the kernel can indeed provide a pretty good solution - why not do it
this way.</p>

<p>the TLS setup avoids an extra set_thread_area() syscalls. [Standalone
glibc applications still use set_thread_area(), so this syscall does not
obsolete set_thread_area().]</p>

<p>Implementational issues: i've introduced a new kernel-internal clone
flag, CLONE_STARTUP. In theory we could use the existing clone() syscall and
let applications fill in CLONE_STARTUP - i felt uneasy about this solution
because it introduces a versioned sys_clone() parametering, makings things
messy. But it would undoubtedly work safely and reliably, and it's even a
bit slower than the separated syscalls solution this patch adds.</p>

<p>for performance reasons the kernel does not recognize the -1 TLS
descriptor number, but this is a non-issue, child threads inherit the TLS
index of the parent anyway. Also, the kernel does not allow an 'empty'
TLS to be defined.</p>

</quote>

<p>Linus Torvalds had some implementation issues, but said, <quote who="Linus
Torvalds">Other than that the thing seems to make sense.</quote> Christoph
Hellwig also said the name clone_startup() was just terrible. He suggested
spawn_thread() or create_thread() instead, adding, <quote who="Christoph
Hellwig">it's not our good old clone and not a lookalike, it's some pthreadish
monster..</quote> Linus replied:</p>

<quote who="Linus Torvalds">

<p>I agree that the name is a bit ugly, but this is a system call that I
actually think is fundamentally useful (ie I can see how it would be
totally usable quite outside any specific library implementation issues).</p>

<p>Talking it over with the IBM threading guys is still worthwhile, though.
There may be _other_ information that the IBM guys have problems with, and
it could easily be that the interface we really want is even more generic.</p>

</quote>

<p>But he went on:</p>

<quote who="Linus Torvalds">

<p>This one definitely isn't a pthread-specific problem. The old UNIX fork()
semantics for &lt;pid&gt; returning really are fairly broken, since the notion
of returning the pid in a local register is inherently racy for _anything_
that wants to maintain a list of its children and needs to access the list
in the SIGCHLD handler.</p>

<p>(Simple explanation: imagine a child that exits so quickly that the parent
hasn't even had time to do the "store pid into the array" before the parent
is already signalled with SIGCHLD. Yes, this happens, and yes, it's a real
problem. It wasn't that long ago that bash would _crash_ on this).</p>

<p>With a system call like this, the parent can</p>

<p>

<ul>

<li>allocate the new child information block first</li>

<li>do the fork with the pid pointer pointing into the child information
block.</li>

<li>when SIGCHLD for that child comes in, all state will have been set up
with no races.</li>

</ul>

</p>

<p>Note how this isn't even thread-specific: it very much would work with
a regular fork-like approach and a standard shell.</p>

</quote>

<p>Christoph suggested calling the thing spawn(), but Linus replied:</p>

<quote who="Linus Torvalds">

<p>spawn() to me implies doing the equivalent of "vfork()+execve()", the way
most non-UNIX OS's do new process creation.</p>

<p>I don't dislike the "thread" name too much, but I want this to be generic,
and seen as such. The same way the original clone() was a proper superset
of fork(), this needs to be a proper superset, not just in name, but in
_usage_. If it's useful for only one thing, that's not good.</p>

</quote>

<p>Ingo replied:</p>

<quote who="Ingo Molnar">

<p>okay, the attached patch gets rid of clone_startup() and adds two new
clone() flags instead:</p>

<p>    CLONE_SETTLS =&gt; if present then the third clone() syscall parameter
                    is the new TLS.</p>

<p>    CLONE_SETTID =&gt; if present then the child TID is written to the
                    address specified by the fourth clone() parameter.</p>

<p>the new parameters are handled in a safe way, clone() returns -EFAULT or
-EINVAL if there's some problem with them.</p>

<p>No current code is affected by these new flags. Patch was testbooted on
2.5.31-BK-current.</p>

</quote>

<p>They went on to discuss the particularities of the patch itself, and the
subthread ended.</p>

</section>

<section
  title="Prospects Of NFSv4 And Crypto In 2.5"
  subject="patch 14/38: CLIENT: add -&gt;setup_read() nfs_rpc_op for async read, part 1"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.1/1464.html"
  posts="21"
  startdate="13 Aug 2002 15:01:53 -0800"
  enddate="16 Aug 2002 11:44:43 -0800"
>
<topic>Disk Arrays: LVM</topic>
<topic>Disks: IDE</topic>
<topic>Disks: SCSI</topic>
<topic>FS: NFS</topic>

<p>In the course of discussion, Dax Kelson asked:</p>

<quote who="Dax Kelson">

<p>Linus, I'm curious if the NFSv4 patches will be accepted in the near
future (ie, before 2.6).</p>

<p>I for one would REALLY like to see NFSv4 (actually, Kerberized NFSv4 is
what I'm after).   I just finished setting up a Kerberized Solaris NFS
environment with home directories automounted from the clients with
strong user authentication.</p>

<p>Frankly, the stock (non-Kerberized) NFS security model blows.</p>

<p>The fact that any janitor with a laptop (or any client with a malicious
root user) can nuke all home directories from a standard NFS home
directory server bothers me greatly.</p>

</quote>

<p>Alan Cox replied, <quote who="Alan Cox">Thats not an NFS2 or NFS3 issue,
thats an implementation matter. A proper NFS credential system prevents that
from occurring. You also have to fix some bogon assumptions in our NFS client
too I grant.</quote> Dax asked for some more details, and Alan went on:</p>

<quote who="Alan Cox">

<p>Ok item #1 you authenticate with the server and get a cryptographic key
for use as credentials. This solves the bad client problem. Kerberos,
gssapi etc will do the job</p>

<p>Item #2 is a bug in our NFS page cache handling. Its not legal in NFS to
assume we can share caches between processes unless they have the same
NFS credentials for the query. The most we can do (and should do) is
that when we think we can reuse a cache entry we issue an NFS ACCESS
check for NFSv3 or for NFSv2 we write it back to the server if dirty
then issue a read for the new credential set.</p>

</quote>

<p>In light of item #1, Dax asked what the prospects were for getting crypto
into the main kernel tree. Linus Torvalds replied:</p>

<quote who="Linus Torvalds">

<p>For a good enough excuse, and with a good enough argument that it's not
likely to be a big export problem, I don't think it's impossible any more.</p>

<p>However, the "good enough excuse" has to be better than "some technically
excellent, but not very widespread" thing.</p>

<p>Quite frankly, I personally suspect that crypto is one of those things
that will be added by vendor kernels first - if vendors are willing to   
handle whatever export issues there are, that's good, and if they aren't,
then the standard kernel cannot really force it upon them anyway.</p>

<p>I personally doubt that NFS would be the thing driving this. Judging by
past performance, NFS security issues don't seem to bother people. I'd
personally assume that the thing that would be important enough to people
for vendors to add it is VPN or encrypted (local) disks.</p>

</quote>

<p>Oliver Xymoron replied:</p>

<quote who="Oliver Xymoron">

<p>I would have thought that there'd be a big push for merging IPSEC in as it
creates one of those "network effects" but it's still stalled by
politics. I think they're waiting for a written invitation or something.</p>

<p>Is loopback solid enough currently to make crypto over loopback
worthwhile? It's occurred to me that it might be better to move the 
translation hooks down to the generic block layer proper so that
things like LVM and iSCSI and brain-damaged bit-swapped IDE could take
advantage of them without the deadlock-prone layering issues of
loopback. Thoughts?</p>

</quote>

<p>And Linus replied:</p>

<quote who="Linus Torvalds">

<p>I don't know that it is clear which layer should do it. It's certainly
_not_ clear whether the block layer is the right point, and even if you
want a hook there I really suspect that upper layers want to pass in
"context" data to the encryption layer.</p>

<p>In particular, having a global disk security mechanism may not actually be
a good idea - you may want to have per-file key information, which at
least implies that the block layer cannot do it alone, and upper layers
need to pass in different user keys depending on the operation.</p>

<p>In other situations, the proper layer is obviously the stream itself (ie
the "NFS over SSH/Kerberos" kind of thing), but that approach assumes that
you trust the remote end. If you don't trust the remove end, you're back
to wanting per-file encryption (possibly in _addition_ to the stream
encryption), which then ends up implying that you need to have encryption
either at the page cache level or at the actual API level.</p>

<p>(The API level tends to be just done with user-level loadable libraries,
of course, so there may not be much reason for kernel support there.
Kernel support may or may not be desireable even if the encryption itself
were to be done by the user)</p>

<p>And separate from the actual encryption, you have key management. Even if
the kernel were to do no encryption at all (as with a user-level library
approach), I suspect that some people would like to have support for
keeping track of which keys a process has.</p>

<p>And THIS, I suspect, is one of the major reasons there isn't really all
that much encryption in the kernel. There's just too much choice, and
different people really need different things - resulting in it being all
over the place.</p>

<p>Clearly some people trust their servers, and just want to have a safe
conduit over the WAN when they access them. Others don't even trust the
LAN or the server contents themselves, and want per-file protection with
private passwords. And both have a good point. It just means that there is
no "hook". There is a "maze of hooks, all slightly different".</p>

</quote>

</section>

<section
  title="NFSv4 Server Support"
  subject="patch 38/38: SERVER: giant patch importing NFSv4 server functionality"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.1/1446.html"
  posts="2"
  startdate="13 Aug 2002 15:12:53 -0800"
  enddate="14 Aug 2002 04:43:47 -0800"
>
<topic>FS: NFS</topic>

<p>Kendrick M. Smith posted a big patch and announced:</p>

<quote who="Kendrick M. Smith">

<p>Now that all the hooks are in place, this large patch imports all of the
new code for the NFSv4 server.</p>

<p>This patch makes almost no changes to the existing nfsd codebase (these
have been taken care of by the preceding patches).</p>

<p>One aspect of the NFSv4 code deserves comment.  The most natural scheme
for processing a COMPOUND request would seem to be:</p>

<p>  1a. XDR decode phase, decode args of all operations<br />
  2a. processing phase, process all operations<br />
  3a. XDR encode phase, encode results of all operations</p>

<p>However, we use a scheme which works as follows:</p>

<p>  1b. XDR decode phase, decode args of all operations<br />
  2b. For each operation,<br />
        process the operation<br />
        encode the result</p>

<p>To see what is wrong with the first scheme, consider a COMPOUND of the form
READ REMOVE.  Since the last bit of processing for the READ request occurs in
XDR encode, we might discover in step 3a that the READ request should return
an error.  Therefore, the REMOVE request should not be processed at all.
This is a fatal problem, since the REMOVE was already been done in step 2a!</p>

<p>Another type of problem would occur in a COMPOUND of the form READ WRITE.
Assume that both operations succeed.  Under scheme (a), the WRITE is actually
performed _before_ the READ (since the "real" READ is really done during XDR
encode).  This is certainly incorrect if the READ and WRITE ranges overlap.</p>

<p>These examples might seem a little artificial, but nevertheless it does
seem that in order to process a COMPOUND correctly in all cases, we need to
use scheme (b) instead of scheme (a).</p>

<p>(To construct less artificial examples, just substitute GETATTR for READ
in the examples above.  This works because the "real" GETATTR is done during
XDR encode: one would really have to bend over backwards in order to arrange
things otherwise.)</p>

</quote>

</section>

<section
  title="More Logging Issues Considered"
  subject="[patch] printk from userspace"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.1/1494.html"
  posts="21"
  startdate="13 Aug 2002 19:18:18 -0800"
  enddate="19 Aug 2002 03:28:47 -0800"
>
<topic>Capabilities</topic>
<topic>Klibc</topic>
<topic>Spam</topic>

<mention>H. Peter Anvin</mention>

<p>Andrew Morton posted a patch to allow programs in user-space to use
printk().  He said, <quote who="Andrew Morton">The main use of this is
within hpa's klibc - initial userspace needs a way of logging information and
this API allows that information to be captured into the printk ringbuffer.
It ends up in /var/log/messages.  Messages are truncated at 1024 characters by
printk's vsprintf().  Requires CAP_SYS_ADMIN.</quote> Benjamin LaHaise thought
this was an awful idea for security reasons, since any user could spam the
kernel's log rinbuffer. But several folks pointed out that Andrew's patch
required root priveleges, so not every use could take advantage of it. But
Benjamin asked, <quote who="Benjamin LaHaise">isn't adding yet another syscall
that's equivalent to write(2) a reason to take this patch and burn it along
with the vomit its caused?</quote> Alexander Viro replied:</p>

<quote who="Alexander Viro">

<p>I have a better suggestion.  How about we make write(2) on /dev/console
to act as printk()?  IOW, how about making _all_ writes to console show up
in dmesg?</p>

<p>Then we don't need anything special to do logging _and_ we get output
of init scripts captured.  For free.  dmesg(8) would pick that up, klogd(8)
will work as is, etc.</p>

</quote>

<p>H. Peter Anvin said /dev/console was probably not the best place for that;
and Linus Torvalds agreed, but added, <quote who="Linus Torvalds">I like
the notion. I've always hated the fact that all the boot-time messages get
lost, simply because syslogd hadn't started, and as a result things like
fsck ran without any sign afterwards. The kernel log approach saves it all
in one place.</quote></p>

<p>Benjamin reiterated that the original patch should be reverted, as it
created a new syscall that duplicated existing functionality. He posted a
patch that he preferred, and Andrew agreed that it was better.</p>

</section>

<section
  title="Dealing With Oopsen"
  subject="[patch] 2.4.20-pre2 RTFM Documentation/oops-tracing.txt"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.1/1567.html"
  posts="1"
  startdate="14 Aug 2002 04:15:14 -0800"
>

<p>Keith Owens posted a patch and explained:</p>

<quote who="Keith Owens">

<p>In the hope that this will reduce the number of "what does this
oops mean?" and "what do I need to report?" questions on l-k.  Hits all
architectures, only tested on i386 but "obviously correct" (yeah, right!).</p>

<p>Print "Read Documentation/oops-tracing.txt before reporting this problem"
before oops, nmi lockup etc.  If somebody is maintaining a bug database,
I don't mind if the message is modified to also point to the bug database.</p>

</quote>

</section>

<section
  title="PC-Speaker Driver In Mainstream Kernel"
  subject="Re: [ANNOUNCE] New PC-Speaker driver"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.1/1558.html"
  posts="22"
  startdate="14 Aug 2002 08:06:38 -0800"
  enddate="18 Aug 2002 00:49:58 -0800"
>

<mention>Daniel Phillips</mention>
<mention>Andrew Rodland</mention>

<p>A couple weeks before, Stas Sergeev announced a new <a
href="http://www.geocities.com/stssppnn/pcsp.html">a new PC speaker driver</a>
for 2.4.18. Now, Denis Vlasenko reported that it worked for playing mp3s. Stas
thanked him for the test, and said, <quote who="Stas Sergeev">indeed my
primary goal was to make the sound quality acceptable even for playing MP3s.
With the motherboard's output attached to an external speakers the quality
is definitely acceptable, but for the internal beeper I am not shure if it
is possible to really enjoy MP3s however:)</quote> Andrew Rodland reported
getting some good sound and some horrible noise. He thought it might be the
motherboard, and Stas agreed with this (pointing out that most folks were
not experiencing bad noise problems with the driver), and tried to come up
with a workaround.</p>

<p>There was also some talk of getting the driver into the mainstream kernel,
but at one point Denis Vlasenko said:</p>

<quote who="Denis Vlasenko">

<p>I'm afraid I'll disappoint you guys but chances of getting this into mainline
are slim for the following reasons:</p>

<p>

<ol>

<li>New motherboards have built-in sound, it may be crappy but definitely
better than PC speaker.</li>

<li>PC speaker hardware is not standardized enough. It is designed to
beep reliably, but no manufacturer tests it for good frequency diagram and
such. Since they may be wired differently, you can't be sure which way you
can force maximum amplitude on a particular mobo (there are 2 or 3 ways to
reach max on different mobos.  Or so I read in a magazine a long ago).</li>

<li>It loads CPU enormously. Even more so considering that some recent
chipsets _emulate_ speaker via their integrated sound and SMM mode (ick).</li>

</ol>

</p>

</quote>

<p>Stas admitted that getting the code into the main tree was not very likely,
mainly because the code just wasn't ready. He and others felt that Denis'
specific objections were not serious barriers. To Denis' first point, Stas and
Daniel Phillips pointed out that not all modern motherboards came with sound.
And to Denis' third point, Stas felt that this was a bug, and the code should
not be so CPU hungry.</p>

<p>No agreement was reached in the thread.</p>

</section>

<section
  title="Benchmarking Forking On 2.4.20-pre2 And 2.4.20-pre2-ac1"
  subject="Performance differences for recent kernels running forky test."
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.1/1628.html"
  posts="4"
  startdate="14 Aug 2002 11:17:10 -0800"
  enddate="14 Aug 2002 17:17:41 -0800"
>
<topic>FS: sysfs</topic>
<topic>SMP</topic>
<topic>Virtual Memory</topic>

<p>Steven Cole announced:</p>

<quote who="Steven Cole">

<p>I ran the following lots_of_forks.sh script for several kernels.</p>

<p><a
href="http://people.nl.linux.org/~phillips/patches/lots_of_forks.sh">http://people.nl.linux.org/~phillips/patches/lots_of_forks.sh</a></p>

<p>using time -v sh lots_of_forks.sh</p>

<p>The results for 2.4.20-pre2 and 2.4.20-pre2-ac1 are very different.</p>

<pre>2.4.20-pre2:
Command being timed: "sh lots_of_forks.sh"
User time (seconds): 18.15
System time (seconds): 24.96
Percent of CPU this job got: 181%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:23.71

2.4.20-pre2-ac1:
Command being timed: "sh lots_of_forks.sh"
User time (seconds): 28.04
System time (seconds): 53.18
Percent of CPU this job got: 187%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:43.32</pre>

<p>I ran this test 8 times in a row with no pause in between runs. The
numbers are System time as reported by time -v.  The test machine is 2-way
p3, SMP kernels, configured the same, no tweaks to /proc/sys/vm.</p>

<pre>        2.4.20-pre2     2.4.20-pre2-ac1 2.5.28          2.5.31

1       24.96           53.18           39.91           37.04
2       24.92           52.42           44.91           45.88
3       24.69           50.69           48.63           44.89
4       24.39           51.9            58.12           55.8
5       24.72           46.14           49.81           43.18
6       24.34           47.99           57.62           40.93
7       24.64           52.33           50.42           47.27
8       24.53           52.84           45              36.49</pre>

<p>This may be a very unfair benchmark. Or it may show something worth
investigating further.</p>

</quote>

<p>Alan Cox replied:</p>

<quote who="Alan Cox">

<p>I'd expect that to be the case. Rmap is a huge win for many things but
its not a good win on fork times. The question is whether fork bombs dominate
your working load and what the tradeoffs are between saner VM behaviour and
less accounting overhead.</p>

<p>Its not clear what the answer is.</p>

</quote>

<p>Andrew Morton also targeted the rmap
code as a likely cause of Steven's results. He
suggested, <quote who="Andrew Morton">Could you retest 2.5.31 with <a
href="http://www.zip.com.au/~akpm/linux/patches/2.5/2.5.31/stuff-sent-to-linus/everything.gz">http://www.zip.com.au/~akpm/linux/patches/2.5/2.5.31/stuff-sent-to-linus/everything.gz</a>
applied?</quote> Steven did so and reported back:</p>

<quote who="Steven Cole">

<p>here are the results:</p>

<pre>        2.5.31-vanilla  2.5.31-akpm-all
1               37.04           35.98
2               45.88           36.94
3               44.89           35.23
4               55.8            38.49
5               43.18           51.43
6               40.93           46.3
7               47.27           46.94
8               36.49           47.19</pre>

</quote>

</section>

<section
  title="WOLK Project Needs Maintainer"
  subject="[ANNOUNCE] WOLK v3.5 FINAL, Codemane 'Fin' alias 'Birthday Release'"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.1/1667.html"
  posts="1"
  startdate="14 Aug 2002 12:57:41 -0800"
>
<topic>Big O Notation</topic>
<topic>Clustering: Mosix</topic>
<topic>Scheduler</topic>

<p>Marc-Christian Petersen gave <a href="http://sf.net/projects/wolk">a
URL</a> and announced:</p>

<quote who="Marc-Christian Petersen">

<p>I am very proud to announce: (and also give me a small present for my
b'day :)</p>

<p>WOLK v3.5 FINAL, Codename 'Fin' alias 'Birthday Release'</p>

<p>A lot of development has been done since the last version of WOLK, v3.4.</p>

<p>Also I am a kind of happy that this is the last release of the "Working
Overloaded Linux Kernel", because I don't have the time that WOLK needs for
further good development. I have a job, a girl friend, some friends etc. so I
depend on some people who will help me to manage this project successfull.</p>

<p>I've asked a thousand times for help, got some offers, but never really get
that what they promised to do. The only real helping hands for patches was
Michael Gasperi, the only Co-Developer for my project, and Dominik Perpeet,
my "personal" C/C++ Guru ;). And 2 times Jure Pecar ... But 2-3 people are
definitively too less for managing this big project successfull.</p>

<p>Anyway, it was a nice time, having fun, a good kernel, many learning
about kernel internals. Thanks a lot to all those people around over the
planet of using WOLK.</p>

<p>Sorry, no OpenMosix and also no O(1) scheduler as I promised!</p>

</quote>

</section>

<section
  title="GPG-Signing Kernel Mailing List Posts"
  subject="GPG/PGP-signatures"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.1/1673.html"
  posts="2"
  startdate="14 Aug 2002 13:04:50 -0800"
  enddate="14 Aug 2002 15:22:42 -0800"
>

<mention>John L. Males</mention>
<mention>Thomas Duffy</mention>
<mention>Roger Gammans</mention>
<mention>Martin Waitz</mention>
<mention>Udo A. Steinberg</mention>
<mention>Brandon Low</mention>
<mention>Austin Gonyou</mention>

<p>David Weinehall reported:</p>

<quote who="David Weinehall">

<p>I think that it is great that people GPG/PGP-sign their posts (and I intend
to start doing so myself, as soon as I get proper connectivity at home, and
thus don't have to send all e-mail via a remote server where I don't want
to store my private key), but when the public keys are unavailable, hard to
obtain, or invalid for one reason or another, the signing is useless.</p>

<p>I've monitored the use of signatures on the list the last few months,
and have come up with this list of people whose signatures I've been unable
to find (neither available on wwwkeys.pgp.net nor has a x-pgp or x-gpg header
saying where to download the key):</p>

<pre>Justin Carlson          C1A06FBE
Florent Chabaud         95C81C3C
Thomas Duffy            38F3C1BC
David Fries             CB1EE8F0
Roger Gammans           88DE0B3E
Austin Gonyou           59853282
Josh Litherland         893D9228
Brandon Low             1F012DC6
John L. Males           99ED3565
Brendan W. McAdams      82306710
Solomon Peachy          2DBBE7D0
Joe Radinger            F957E8F3
Udo A. Steinberg        233B9D29
Gianni Tedesco          8646BE7D
Martin Waitz            DFE80FB2
Derek James Witt        972FE938
Wiktor Wodecki          A1559FE7
Pete de Zwart           984AF710</pre>

<p>I've bcc:d all of the above.</p>

<p>For those who who possibly don't know how to upload their public key to
a public server, here's how:</p>

<p>gpg --keyserver wwwkeys.pgp.net --send-keys &lt;keyid&gt;</p>

</quote>

<p>He replied to himself the next day, saying:</p>

<quote who="David Weinehall">

<p>I found the public keys for the following persons on search.keyserver.net
(thanks to Roger Gammans for the hint!);</p>

<p>Brandon Low<br />
Solomon Peachy<br />
Pete de Zwart<br />
Gianno Tedesco (seems to have a broken mail-client; the signatures on
his posts are BAD, at least according to mutt/gnupg v1.0.7)<br />
Roger Gammans</p>

<p>Finally a recommendation:</p>

<p>add</p>

<p>x-gpg-fingerprint: &lt;fingerprint&gt;<br />
x-gpg-key: &lt;url to your key or a keyserver&gt;</p>

<p>to your mail-headers.</p>

</quote>

</section>

<section
  title="Journaling API Documentation For 2.4"
  subject="Re: [PATCH] Re: Some JBD documenation"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.1/1703.html"
  posts="2"
  startdate="14 Aug 2002 14:23:10 -0800"
>
<topic>FS</topic>

<p>Roger Gammans posted a patch to add some some journaling API documentation
to Documentation/DocBook/journal-api.tmpl in 2.4. He said:</p>

<quote who="Roger Gammans">

<p>This patch is the JBD DocBook documentation patch which I been promising
for too long now ;-).</p>

<p>This one is against 2.4.20-pre2.</p>

<p>Andrew if you would prefer it diff against something different let me
know.</p>

</quote>

</section>

<section
  title="VM Regress 0.5 Released"
  subject="VM Regress 0.5"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.1/1743.html"
  posts="4"
  startdate="14 Aug 2002 18:15:42 -0800"
  enddate="17 Aug 2002 16:01:12 -0800"
>
<topic>Virtual Memory</topic>

<p>Mel Gorman announced:</p>

<quote who="Mel Gorman">

<p>Project page: <a
href="http://www.csn.ul.ie/~mel/projects/vmregress/">http://www.csn.ul.ie/~mel/projects/vmregress/</a></p>

<p>Download: <a
href="http://www.csn.ul.ie/~mel/projects/vmregress/vmregress-0.5.tar.gz">http://www.csn.ul.ie/~mel/projects/vmregress/vmregress-0.5.tar.gz</a></p>

<p>This is the second public release of VM Regress. It is the beginnings of
a regression, benchmarking and test tool for the Linux VM. The web page has
an introduction and the project itself has quiet comprehensive documentation
and commentary. It is still in it's very early days.</p>

<p>This release has a lot of solidification of the suite infrastructure, the
full changelog is at the end. I'm not going to bore people with the details
but it is in better shape. There is two new features that are of serious
note.</p>

<p>

<ol>

<li>Print out page present/swapped map
   The pagetable core module can now print out a map at the end of the test
   representing pages in an address space. This means that when a tests is run
   referencing pages, it is possible to see *exactly* what the address space
   looked like after. I am considering expanding this to print out the address
   space of any process but I'm not sure how useful that would be. It might be
   handy for running an ad-hoc shell script and having the module attach to
   the process to print out it's address space before exiting to see what it
   looked like at the end.....</li>

<li>A script plot_map.pl is provided that will take test output that has a map
   (currently only fault.o) and produce a webpage of it. See
   http://www.csn.ul.ie/~mel/projects/vmregress/output_sample/test_fault_zero.html
   for what a sample page looks like. The graph shows the address space been
   tested. When the test finished, the whole process was been swapped out so
   all the pages at the beginning are swapped and the later ones are still
   present. It is expected that later tests will show how well rmap makes 
   this look in comparison to older kernels. Later tests will also have a
   more interesting reference pattern than straight linear referencing</li>

</ol>

</p>

<p>The next feature to add to the graphs is including an artifical page reference
count. For a given test, the number of times a page was referenced will be
recorded and this will be compared to the pages present in memory. This should
help determine if Linux can choose the right pages to keep in memory or
not. From there, tests will be written with different reference pattern
and different types of memory such as mmaped files and so on.</p>

<p>A feature of lesser note is the beginning of been able to view the vmalloc
area. At the moment, it'll only print out the dimensions though. Much of the
rest was building up the core.</p>

<p>Again, it can't provide all the answers yet, but it's very early days and
if this was a quick job, it would have been written already :-) . I hope
that eventually it'll be able to answer most VM related questions.</p>

<p>Changelog for this release as follows....</p>

<p> Version 0.5</p>

<p>

<ul>

<li>Added a module kvirtual for printing out the vmalloc address space</li>
<li>Can now pass a pointer to client data into page table walk functions</li>
<li>Proc buffers are now stored in the vmr_desc_t struct</li>
<li>Proc buffers can be grown</li>
<li>Process maps can be printed out to view present/swapped pages</li>
<li>Created plot_map.pl which will plot a page present/swapped graph</li>
<li>set plot_map.pl to output html pages upon request</li>
<li>Updated kernel patches to 2.4.20pre2 . Should apply to 2.5.x</li>

</ul>

</p>

<p>Any feedback is appreciated.</p>

</quote>

</section>

<section
  title="I/O Scheduler Logic Munged In 2.4.20 Pre-Patch Cycle"
  subject="[patch] elevator seek accounting fixes"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.1/1767.html"
  posts="1"
  startdate="14 Aug 2002 22:32:54 -0800"
>

<p>Jens Axboe posted a patch and reported:</p>

<quote who="Jens Axboe">

<p>Folks, we have a somewhat embarassing problem in the 2.4 i/o scheduler.
Basically the accounting currently done in 2.4.20-pre2 is bogus.</p>

<p>Requests are aged as the i/o scheduler passes over them, looking for a
merge or insertion point. If no merges are found, a complete queue scan
will have been completed and thus aged all requests down by one. So
requests in from of the insertion point are penalized as much as those
behind it. If a merge is found, ll_rw_blk.c will call the elevator
merge_cleanup function, which will account the merge by decrementing the
sequence of requests behind the merge point by the sector count of the
buffer. In addition, these requests have been aged as well. So the end
result is that a seek penalizes all requests with a cost of 1, a merge
penalizes requests behind it with a cost of sectors + 1, typically 9.  </p>

<p>Completely crap! I dunno where this logic got reversed, but here's a
patch to fix it. It does two things:</p>

<p>

<ul>

<li>Account merges by a cost of 1, and account seeks by a cost of 16. The
  actual numbers are not very important, here they just imply that a
  seek costs 16 times as much as a merge. Actual merge cost is not
  important because request size is finite. This means that we are 
  invalidating old elvtune values for the elevator. I've chosen 2048 for
  READs and 8192 for WRITEs currently, which translates into ~128 seeks
  can pass a READ at most (and ~512 for WRITEs).</li>

<li>Still allow a merge even if we cross a zero sequence point in the sort
  list. This is done on the premise that merges are basically "free", as
  seen from the disk.</li>

</ul>

</p>

<p>The actual values will probably need a bit of tweaking. I would very
much appreciate people testing what gives good throughput on benchmarks,
and what provides good latency for desktops.</p>

<p>Marcelo, please apply for 2.4.20-pre2</p>

</quote>

</section>

<section
  title="Cleaning Up Language In 2.4 Configure.help File"
  subject="PATCH - Configure.help grammar/readability patch"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.1/1768.html"
  posts="1"
  startdate="14 Aug 2002 22:38:32 -0800"
>

<p>Kevin Burtch announced:</p>

<quote who="Kevin Burtch">

<p>I've been thinking about doing this since the beginning of the configuration
help texts. The majority of the changes are the replacement of "say" with
"select" (along with appropriate rewording), since even though there are
many different ways to configure the kernel, speech recognition isn't one of
them yet. :) I've tried to correct the grammar with all of the replacements
as thoroughly as I could, and make it more consistent.  Since I was at it,
I also wrapped some of the long lines.</p>

<p>The patch is against 2.4.19, and is located at <a
href="http://www.geocities.com/kevin_burtch/config.patch.gz">http://www.geocities.com/kevin_burtch/config.patch.gz</a>
(I didn't want to post it since it's over 1MB in size uncompressed)</p>

</quote>

</section>

<section
  title="IDE Maintainership Troubles; IDE Work Delayed Until 2.7"
  subject="IDE?"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.2/0136.html"
  posts="87"
  startdate="16 Aug 2002 13:00:11 -0800"
  enddate="21 Aug 2002 06:14:45 -0800"
>
<topic>Disks: IDE</topic>
<topic>PCI</topic>

<mention>Jens Axboe</mention>
<mention>Martin J. Bligh</mention>
<mention>Russell King</mention>
<mention>Mark Lord</mention>

<p>Martin J. Bligh noticed that Jens Axboe had deleted the entire IDE core
from 2.5, and replaced it with the version from 2.4.19-pre-acX. He asked what
had happened, and Linus Torvalds replied, <quote who="Linus Torvalds">Martin
gave up the fight he had to do all the time, so..</quote> Matthias Andree
replied:</p>

<quote who="Matthias Andree">

<p>Not having seen much of all the work, this sounds like it is a sad day,
for Martin who contributed a lot of his time to work on the issues, while
people seemed not to be too grateful, screaming from either end of the road,
this must wear people out.</p>

<p>Is there a way how the improvements that parts of the stuff have received
can be rescued somehow? Or at least the knowledge of which can be used
somewhat directly for a IDE-TNG driver? I'd find it really sad to just let
go of so much time that had been invested into the project -- but keep in
mind I have NO knowledge of the gory details of the last 2.5 IDE stuff.</p>

</quote>

<p>Russell King said he'd resubmit some of his own stuff to the new maintainer,
and Andre Hedrick said:</p>

<quote who="Andre Hedrick">

<p>I will hand it to you guys on a silver platter IDE-TNG.</p>

<p>Below yields modular chipsets and channel index registration.  Selectable
IOPS for arch independent Taskfile Transport layers.  Now to finish the job
with device class link lists to address fully modular subdrivers.  It also
includes 1st generation of device open and select calls of subdrivers.</p>

<p>You have ide-cd registered on a cdrw and you want to burn a cd?<br />
open(/dev/hdX) transform_subdriver_scsi close(/dev/hdX)<br />
open(/dev/sg) and burn baby burn.<br />
close(/dev/sg) releases transform_subdriver_scsi<br />
open(/dev/hdX) load native atapi transport.</p>

</quote>

<p>He added, <quote who="Andre Hedrick">If this is what you want, this is what
I have to put on the table.  If you do not I will delete the code.</quote></p>

<p>Skip Ford replied, <quote who="Skip Ford">Can't you just create a patch and
send it to the list?  I for one would like to try out your code.  Just diff
it and send it without the song and dance please.</quote> Alan Cox remarked,
<quote who="Alan Cox">You can do the switch (one way only right now) in
2.4.20-pre2-ac3.  Ultimately for 2.4 I want to get to the point where open()
tries to switch between srfoo and hdfoo and locks out the other user. For
2.5 we can get more esoteric. 2.4 has to continue to just work.</quote></p>

<p>Elsewhere, Marc-Christian Petersen said to Linus:</p>

<quote who="Marc-Christian Petersen">

<p>I am beside my self with laughing, sorry :P</p>

<p>I really can imagine what are you dreaming of. Like: "shit, f*ck, why
the hell I kicked Andre Hedrick in the ass and why, for heaven's sake,
I said jump in the lake to him?!!?"</p>

<p>Sorry, couldn't resist. ;)</p>

</quote>

<p>Rik van Riel spoke up:</p>

<quote who="Rik van Riel">

<p>Having thrown away months and months of hard work, or giving up on months
of hard work is NOT FUN.</p>

<p>I'm thankful Martin tried to make the IDE layer better.</p>

<p>His method of removing things to "add a better implementation later"
may not have worked out in the end, but I'm thankful he tried.</p>

</quote>

<p>And Andrew Morton added, <quote who="Andrew Morton">Yes.   Martin starkly
demonstrated how much work is needed in there, and how much cruft has
accumulated.  That is valuable.</quote></p>

<p>Elsewhere, Linus also replied to Marc-Christian's "I really can imagine
what you are dreaming" comment, saying:</p>

<quote who="Linus Torvalds">

<p>Actually, you apparently can't.</p>

<p>I'm dreaming of an IDE maintainer that people (including, very much, me)
can work with. I don't know why, but IDE has pretty much since day one been
a fairly problematic area, and has caused a lot more maintainer headache
than the rest of the kernel put together..</p>

<p>There's been one fairly smooth IDE transition (the original transition
from hd.c to ide.c), and calling even that "smooth" is pretty much all
hindsight - at the time people thought it was horribly stupid to not allow
big controversial changes to hd.c, and the resulting code duplication was
considered a disaster.</p>

<p>Right now it looks like Alan is at least for the moment willing to work
on the IDE code, which is obviously great. I just wonder how long he'll
stand it (he's maintained various IDE buglists etc issues for years, so we
can hope).</p>

</quote>

<p>Larry McVoy asked, <quote who="Larry McVoy">could you (or anyone) provide a
history of the IDE maintainers to date and why they didn't work out and what
would need to change to make them work out?  I'm sticking my nose in where
I know nothing but maybe one of them could rise up to the necessary level if
it were spelled out what that level was.</quote> Andries Brouwer explained:</p>

<quote who="Andries Brouwer">

Prehistory: Linus and others.

<p>Since start of 1994: Mark Lord. Everybody was happy until mid 1998
(2.1.111), when, after a discussion about problems a few people had with
DMA Linus patched linux/drivers/block/Config.in:</p>

<pre>-        bool '     Generic PCI bus-master DMA support' CONFIG_BLK_DEV_IDEDMA
+       # Either the DMA code is buggy or the DMA hardware is unreliable. FIXME.
+        #bool '     Generic PCI bus-master DMA support' CONFIG_BLK_DEV_IDEDMA</pre>

<p>and Mark wrote: "I will not be updating the IDE driver again until the
linux/drivers/block/Config.in file is restored to its pre-111 state."</p>

<p>Since Fall 1998 (2.1.122): Andre Hedrick.</p>

<p>Recent history is known.</p>

<p>(Lots of other people also did useful work on IDE. I will not try to list
names since I would forget some.)</p>

<p>Of course, "IDE maintainer" implies work on the interface with the
hardware and work on the interface with the block I/O subsystem of the kernel.
Some people know all about the hardware, others know much less about hardware
but have good ideas about the driver interface.  There is no reason to force
the "IDE maintainer" to be a single person.</p>

</quote>

<p>Linus replied:</p>

<quote who="Linus Torvalds">

<p>There isn't in theory, but because a minor change to one part will make
other drivers fail subtly, one person has to be the one that holds the bag
in the end. Because somebody _will_ be the one that everybody looks at when
something breaks.</p>

<p>That is probably one of the largest reasons for the "IDE disease". The
symptoms of the disease is that people complain about the stuff not working,
and the maintainer eventually getting so fed up with the complaints that he
stops interacting with reality, and starts worrying about compliance with
the documentation instead, hoping that that will fix everything.</p>

<p>Which would work fine, except a lot of the time the problems aren't due
to things in the documentation, but simply due to hardware that isn't really
in spec and needs to have workarounds etc. So once the "this is how it is
documented, and if it doesn't work your machine is broken" disease starts,
it's all downhill from there.</p>

<p>I will claim that this happens for a lot of other hardware too, but in
other hardware there often isn't quite as much baggage (people in the end
throw out the core and start on a new one without historical cruft), and
the inter-driver linkages do not exist to _nearly_ the same degree. When a
developer can work with just one chipset, it's still possible to believe that
you can keep up. But when you get blamed for all the different IDE problems,
you crawl into your shell and go away.</p>

<p>This is why I believe that the only sane result in the end is to have
independent drivers that probably end up having a lot of duplication (the
same way hd.c and ide.c started out with a lot of duplication), but where
there truly _can_ be multiple people in charge of their own drivers (and also
clear _whose_ problem it is when one IDE controller driver doesn't work).</p>

<p>(Some of the infrastructure could be made truly generic, but the generic
part should _only_ be for stuff that is truly hardware-independent, and simply
_cannot_ be impacted by quirks and outright bugs in the hw implementations. In
short, only stuff that can be argued about on a logical and clear level,
and where the rules are made up by us, not by quirky hardware).</p>

</quote>

<p>Elsewhere, Linus also replied to Larry:</p>

<quote who="Linus Torvalds">

<p>I actually don't think it's the people as much as it is the ridiculous
linkages inside ide.c and the hugely complicated rules. The code is messy.</p>

<p>The network drivers have various setups that share the same chipset, but
there they tend to be individual drivers that just share helper routines.
Each driver still does their own PCI driver registration etc. In contrast,
when it comes to IDE, you're supposed to be an IDE driver first, and a PCI
chipset driver second, and that putting o fthe cart before the horse results
in problems.</p>

<p>Even something as simple as a PIIX driver (which _should_ just register
itself as a driver for the piix chipsets) doesn't do that. Instead, we
have ide-pci.c, which has a list of all the chipsets it knows about, and
then does initialization and calls the init routines that it knows about.
That's just incestuous.</p>

<p>And we all know where incest leads. Hereditary insanity.</p>

</quote>

<p>Larry asked again, what would be required for an IDE maintainer. Alan
Cox replied:</p>

<quote who="Alan Cox">

<p>IMHO you need</p>

<p>

<ul>

<li>An understanding of ATA (which is the protocol equivalent of object
oriented cobol)</li>

<li>The ability to work with vendors (it needs to be someone at a company
because many vendors won't NDA with individuals even if they are happy with
GPL code off their data sheet)</li>

<li>Someone who has taste in code and understands how to beat code into
shape without breaking it</li>

<li>The ability to deduce the other errata the vendor forgot to tell you about
or doesn't want to admit exists for fear of US lawsuits (I kid you not)</li>

<li>A good understanding of the block layer and its locking especially
because IDE has a heirarchy of contention problems:</li>

<ul>

<li>two drives one bus</li>
<li>two channels one DMA engine</li>
<li>two controllers one I/O at a time</li>
<li>ISA IRQ sharing locks</li>

</ul>

</ul>

</p>

</quote>

<p>Linus also replied to himself:</p>

<quote who="Linus Torvalds">

<p>Note: it _is_ the people too, don't get me wrong. But in other areas we
have people like Al Viro, who can drive grown men to cry (and drink) with his
not-very-polite postings. And in those areas it hasn't been a huge problem,
even though some people probably take a valium or two before they dare open
emails from Al.</p>

<p>So the messiness and interconnectedness of the IDE layer just seems to
bring the people problem to a sharp and ugly point. The absolute lack of
communication skills wrt IDE among the people who have worked on it has
been stunning, and that probably _is_ because the code is so hard to even
talk about.</p>

</quote>

<p>Alexander Viro piped up with:</p>

<quote who="Alexander Viro">

<p>Sigh...  What we need with IDE is</p>

<p>

<ol>

<li>translator/bogon filter between hardware folks and the rest of us.
If Jens or Alan are willing to do that for a while - wonderful.</li>

<li>review of code structure in existing code.  Doing that.</li>

<li>careful massage (as opposed to grand rewrite) of said structure</li>

</ol>

</p>

<p>into something sane.  With series of small provable equivalent
transformations.  And whoever does that is in serious risk of burnout - current
spaghetty in there is a fscking mess.  I'll try to help with that - I know
how to do such work, but I don't promise to get it all the way to sanity.</p>

<p>When we will have sane structure and sane interfaces, the life will get
easier.  Until then full-time maintainership of drivers/ide/* is a one-way
ticket to Bedlam.</p>

</quote>

<p>Linus replied:</p>

<quote who="Linus Torvalds">

<p>I really would suggest an alternate (but not necessarily very different)
approach.</p>

<p>The approach I'd advocate is to</p>

<p>

<ul>

<li>

<p>move the major number registration out of the IDE code, and changing
   all device numbers into indexes + a queue. This can be done without
   actually changing any of the _IO_ the drivers do, and should be doable
   with a transformation that doesn't change behaviur _at_all_.</p>

<p>   This, btw, is an area that a certain Al is fairly intimate with anyway
;)</p>

</li>

<li>once the IDE drivers don't even know about major and minor numbers
   (right now it has 10 major numbers assigned to it, I think) and doesn't
   register a block device with "register_blkdev()" at all, but instead
   registers the controllers it finds one by one through some indirect
   agent, we can now try phase 2.</li>

<li>

<p>phase 2: IDE-TNG. Leave the current IDE code unchanged, and plan to
   obsolete it. It's the "stable IDE", and by virtue of being stable,
   nobody will mind work on new drivers that (by definition) cannot screw
   up unless you use them.</p>

<p>   IDE-TNG would:</p>

<p>

<ul>

<li>be controller-specific (ie one driver for one controller family)</li>

<li>be able to say "screw it" for old or broken setups (which are left
      fot the old IDE code)</li>

<li>in particular, it would only bother with PCI (or better)
      controllers, and with UDMA-only setups.</li>

</ul>

</p>

</li>

</ul>

</p>

<p>The point of IDE-TNG would be to only support the major controllers this
way, but let those major controllers have a driver that is meant for _them_
and doesn't have to worry about historical baggage.</p>

<p>And then in five years, in Linux-3.2, we might finally just drop support
for the old IDE code with PIO etc. Inevitably some people will still use it
(the same way some people still use Linux-2.0 with hd.c), but it won't have
been in the way for making a cleaner driver in the meantime.</p>

<p>And yes, by now this all is obviously 2.7.x material.</p>

</quote>

</section>

<section
  title="NCR Voyager Support In 2.5"
  subject="[PATCH: NEW SUBARCHITECTURE FOR 2.5.31] support for NCR voyager (3/4/5xxx series)"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.2/0390.html"
  posts="1"
  startdate="18 Aug 2002 07:59:14 -0800"
>
<topic>SMP</topic>
<topic>Version Control</topic>

<p>James Bottomley announced:</p>

<quote who="James Bottomley">

<p>This patch adds SMP (and UP) support for voyager which is an (up to 32 way)
SMP microchannel non-PC architecture.</p>

<p>The only change since 2.5.31 is that the code will now boot with a non-zero
boot cpu id (previously current->cpu was being initialised too late).</p>

<p>The patch is in two parts:  The i386 sub-architecture split is separated
from the addition of the voyager components</p>

<p><a
href="http://www.hansenpartnership.com/voyager/files/arch-split-2.5.31.diff">http://www.hansenpartnership.com/voyager/files/arch-split-2.5.31.diff</a>
(108k)</p>

<p><a
href="http://www.hansenpartnership.com/voyager/files/voyager-2.5.31.diff">http://www.hansenpartnership.com/voyager/files/voyager-2.5.31.diff</a>
(146k)</p>

<p>You must apply the split diff before applying the voyager one.</p>

<p>These two patches are also available as separate bitkeeper trees (the
voyager tree is a superset of the arch-split one):</p>

<p><a
href="http://linux-voyager.bkbits.net/voyager-2.5">http://linux-voyager.bkbits.net/voyager-2.5</a></p>

<p><a
href="http://linux-voyager.bkbits.net/arch-split-2.5">http://linux-voyager.bkbits.net/arch-split-2.5</a></p>

</quote>

</section>

<section
  title="2.5 Problem Report Status"
  subject="2.5 Problem Report status"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.2/0456.html"
  posts="1"
  startdate="18 Aug 2002 16:25:44 -0800"
>
<topic>Disk Arrays: RAID</topic>
<topic>Disks: IDE</topic>
<topic>FS: JFS</topic>
<topic>Feature Freeze</topic>

<p>Thomas Molina reported:</p>

<quote who="Thomas Molina">

<p>Following is the latest status report.  There have been no significant
updates to the list in the past couple of days.  The status report, with
links to discussions can be found at:</p>

<p><a
href="http://members.cox.net/tmolina/kernprobs/status.html">http://members.cox.net/tmolina/kernprobs/status.html</a></p>

<p>Notes:</p>

<p>The  state  of  the  IDE  subsystem in 2.5 is in too much of a flux for
tracking problems to be fruitful. I probably won't add any new ones until
feature freeze unless specifically requested.  Floppy support is currently
broken in 2.5. Higher priority items are delaying work on a fix.</p>

<p>2.5 Kernel Problem Reports as of 16 Aug</p>

<pre>Problem Title                     Status       Discussion
RAID 0 BIO problem                open         2.5.30
schedule() with irqs disabled!    open         2.5.30
bonding driver failure in 2.5     closed       2.5.30
serial oops                       closed       2.5.30
NUMA-Q minimal workaround updates closed       2.5.30
PnP BIOS problem                  closed       2.5.30 
New connections stall             closed       2.5.30
JFS oops                          closed       2.5.30
serial core on embedded PPC       closed       2.5.30 
handle_scancode oops              closed       2.5.30
spinlock deadlock                 closed       2.5.30
smp cpu problem                   closed       2.5.30
LTP process_stress causes oops    open         2.5.30
elv_queue_empty oops              open         2.5.30
Page Writeback oops               open         2.5.30
slab BUG                          open         2.5.30
pmd_page problem                  open         2.5.30
vga console problem               open         2.5.30
P200MMX boot problem              open         2.5.30
io apic problem                   open         2.5.30
dcache oops                       open         2.5.30
vm86 oops                         open         2.5.30
modules don't work                open         12 Aug 2002
unmount oops                      open         12 Aug 2002
usb problem                       open         11 Aug 2002
modules don't work                open         13 Aug 2002
pte.chain BUG                     open         13 Aug 2002
scancode oops                     open         12 Aug 2002
cciss broken                      proposed fix 14 Aug 2002
qlogicisp oops                    open         14 Aug 2002
kmap_atomic oops                  open         15 Aug 2002</pre>

</quote>

</section>

<section
  title="gcml2 Version 0.7 Available"
  subject="ANNOUNCE: gcml2 0.7"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.2/0495.html"
  posts="1"
  startdate="19 Aug 2002 01:06:16 -0800"
>

<p>Greg Banks announced:</p>

<quote who="Greg Banks">

<p>gcml2 is (among other things) a Linux kconfig language syntax checker.
Version 0.7 is available at</p>

<p><a
href="http://sourceforge.net/project/showfiles.php?group_id=18813&amp;release_id=106023">http://sourceforge.net/project/showfiles.php?group_id=18813&amp;release_id=106023</a></p>

<p>and</p>

<p><a
href="http://www.alphalink.com.au/~gnb/gcml2/download.html">http://www.alphalink.com.au/~gnb/gcml2/download.html</a></p>

<p>There's also an online summary of the warnings and errors from the syntax
checker, with real examples, from</p>

<p><a
href="http://www.alphalink.com.au/~gnb/gcml2/checker.html">http://www.alphalink.com.au/~gnb/gcml2/checker.html</a></p>

<p>Here's the change log</p>

<p>

<ul>

<li>Warnings can be individually enabled.  Default set depends
   on whether the parser is in merge mode. API functions to
   enable/disable warnings by index and convert a string name
   to an index.</li>

<li>Added check for define to nonliteral expression.</li>

<li>More precise check for ambiguous comparison against "n" only 
   complains for symbols which are forward-declared at the point
   when compared.</li>

<li>Made inconsistent-tag warnings more precise; doesn't
   emit spurious warnings about define_bool not having an
   (EXPERIMENTAL) tag.</li>

<li>More precise check for forward references and forward
   dependencies can tell the difference between forward and
   undeclared, at the cost of some storage.</li>

<li>Check for overlapping definitions by reducing conditions to
   disjunctive normal forms.</li>

<li>Added check for forward dependencies.</li>

<li>Added check for misuse of and dependency on arch-constant
   symbols like CONFIG_X86.</li>

<li>Renamed summarise-warnings.awk -&gt; summarize.awk and installed
   it.</li>

<li>Added cml-summarize shell script, which runs summarize.awk.</li>

<li>Added cml-check-all shell script, based on old dochecks.sh,
   but now also handles running cml-summarize.</li>

<li>Added manpages for cml-check, cml-check-all and
   cml-summarize. Description of errors and warnings for the
   cml-check manpage is controlled in HTML and shared with the
   web page.</li>

<li>RPM package support: added spec file, rpm: target.</li>

</ul>

</p>

</quote>

</section>

<section
  title="Improving Threading Scalability"
  subject="[patch] O(1) sys_exit(), threading, scalable-exit-2.5.31-A6"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.2/0528.html"
  posts="22"
  startdate="19 Aug 2002 04:16:01 -0800"
  enddate="20 Aug 2002 06:36:19 -0800"
>
<topic>Big O Notation</topic>
<topic>SMP</topic>
<topic>Version Control</topic>

<p>Ingo Molnar posted a patch and announced:</p>

<quote who="Ingo Molnar">

<p>this patch is the next step in the journey to get top-notch threading
support implemented under Linux.</p>

<p>every Linux kernel in existence, including 2.5.31, has a fundamentally
unscalable sys_exit() implementation, with an overhead that goes up if the
number of tasks in the system goes up. It does not matter whether those
tasks are doing any work - just sleeping indefinitely causes sys_exit()
overhead to go up.</p>

<p>200 tasks is typical for a relatively idle server system. 1000 tasks or
more is not uncommon during usual server load on a midrange server.
There are servers that use 5000 tasks or more. It is not uncommon for
highly threaded code to use even more threads - client/server models are
often the easiest to implement by using a per-connection thread model.
[Eg. vsftpd, one of the fastest and most secure FTP servers under Linux,
uses 2 (often 3) threads per client connection [which, for security reason
is implemented via inside per-client isolated processes].]</p>

<p>Some numbers to back this up, i've tested 2.5.31-BK-curr on a 525 MHz
PIII, it produces the following lat_proc fork+exit latencies:</p>

<pre>  # of tasks in the system                200   1000    2000    4000
  ------------------------------------------------------------------
  ./lat_proc fork+exit (microseconds):  743.0  923.1  1153.4  1622.2</pre>

<p>it can be seen that the fork()+exit() overhead more than doubles with
every 4000 tasks in the system.</p>

<p>for threaded applications the situation is even worse. A threading
benchmark that just tests the (linear) creation and exit of 100 thousand
threads using the old glibc libpthreads library, gives the following
results:</p>

<pre>  # of tasks in the system                200   1000    2000    4000
  ------------------------------------------------------------------
  ./perf -s 100000 -t 1 -r 0 -T
  in seconds:                            17.8   37.3    61.1   108.0

  latency of single-thread create+exit
  in microseconds:                        178    373     611    1080</pre>

<p>using the same test linked against new libpthreads:</p>

<pre>  # of tasks in the system                200   1000    2000    4000
  ------------------------------------------------------------------
  ./perf -s 100000 -t 1 -r 0 -T
  in seconds:                             6.8   25.6    48.7    95.1

  latency of single-thread create+exit
  in microseconds:                         68    256     487     951</pre>

<p>the same regression happens as in the old-pthreads case, but with a
(dramatically) lower baseline [which are due to the other optimizations].
With a couple of hundred threads created, the thread create+exit latency
becomes dominated by the hefty sys_exit() overhead.</p>

<p>all in one - sys_exit() is O(nr_tasks), and heavily so - even a reasonable
number of completely idle tasks increase the exit() overhead very visibly.</p>

<p>why is sys_exit() so expensive? The main overhead is in
forget_original_parent(), which must be called for every thread that
exits: the kernel has to find all children the exiting task has created
during its lifetime, and has to 'reparent' them to some other task. The
current implementation uses a for_each_task() over every task in the
system, and finds those tasks whose real parent is the now exiting task.
This is a fundamental work of the kernel that cannot be optimized away -
the child/parent tree must always stay coherent.</p>

<p>but the for_each_task() iteration is excessive. There is a subtle reason
for it though: ptrace reparents debugged tasks to the debugging task,
which detaches the child from the original parent. Thus
forget_original_parent() has to search the whole tasklist, to make sure
even debugged tasks are properly reparented.</p>

<p>the attached patch (against BK-curr) reimplements this logic in a scalable
way: the pthreads code also maintains a global list of debugged tasks -
which list is usually empty in a normal system. It has at most a few tasks
- those one which are debugged currently. This list can be maintained very
cheaply, in a number of strategic places.</p>

<p>forget_original_parent() then searched the exiting task's ->children list,
plus the global ptrace list. In the usual 'task has no children and there
are no debugged tasks around' case this becomes as cheap as two
list_empty() tests!</p>

<p>now on to the performance results, on the same 525 MHz PIII box,
lat_proc:</p>

<pre>  # of tasks in the system                200     1000     2000     4000
  ----------------------------------------------------------------------
  ./lat_proc fork+exit (microseconds):
                                        657.1    680.6    640.8    682.5

  (unpatched kernel results):          (743.0)  (923.1) (1153.4) (1622.2)</pre>

<p>process creation latency is essentially constant, it's independent of the
number of tasks in the system. Even the baseline results got improved by
more than 10%. For the 4000 tasks case the speedup is more than 130%.</p>

<p>the speedup is even bigger for threaded applications using the old
pthreads code:</p>

<pre>  # of tasks in the system                200    1000    2000    4000
  --------------------------------------------------------------------
  ./perf -s 100000 -t 1 -r 0 -T
  in seconds:                            12.6    12.8    11.9    11.9
  (unpatched results):                   (17.8) (37.3)  (61.1) (108.0)

  latency of single-thread create+exit
  in microseconds:                        126    128     119      119
  (unpatched kernel):                    (178)   (373)   (611)  (1080)

  improvement:                             41%    191%   413%     807%</pre>

<p>ie. in the 4000 tasks case the improvement is almost 10-fold!</p>

<p>testing the new glibc libpthreads code shows dramatic improvements:</p>

<pre>  # of tasks in the system                200   1000    2000    4000
  ------------------------------------------------------------------
  ./perf -s 100000 -t 1 -r 0 -T
  in seconds:                             1.7    1.9     1.9     1.9
  (unpatched results):                   (6.8) (25.6)  (48.7)  (95.1)

  latency of single-thread create+exit
  in microseconds:                         17     19      19      19
  (unpatched kernel):                     (68)  (256)   (487)   (951)


  improvement:                            300%  1247%   2463%   4900%</pre>

<p>in the 200 tasks case the speedup is 4-fold, in the 4000 tasks case the
speedup is 50-fold (!). Thread create+destroy latency is a steady 19
usecs. This also enables the head-to-head comparison of old pthreads and
new libpthreads: new libpthreads is more than 6 times faster. This is what
i'd finally call good threading performance.</p>

<p>the hardest part of the patch was to make sure ptrace() semantics are
still correct. I believe i have managed to at least test the typical
workload: i've tested a complex mix of high-load strace situations,
threaded and unthreaded code as well, SMP and UP, so i'm reasonably
certain that it works for the kind of load i use on my systems. [ But
ptrace() is complex beyond belief, so i might as well have missed some of
the subtler items. ]</p>

<p>

<ul>

<li>the patch also includes another optimization to make bash's wait4() job
  easier as well: wait4() does not have to consider non-debugged
  CLONE_DETACHED tasks, it wont get any exit code from them, and those
  tasks can clean themselves up.</li>

<li>the patch also cleans up the &lt;linux/ptrace.h&gt; includes, and moves the
  pthread specific declarations from mm.h to ptrace.h - most of the
  existing includes were bogus.</li>

</ul>

</p>

</quote>

<p>He posted an update shortly thereafter, and Linus Torvalds replied:</p>

<quote who="Linus Torvalds">

<p>Hmm.. This looks good, but I wonder if the real problem isn't really that
our ptrace approach has always been kind of flaky.</p>

<p>Basically, we started with the notion that only parents can trace their
children, so no reparenting was ever needed. Then PTRACE_ATTACH came along,
and we did the reparenting, and I think _that_ is where we made our big
mistake.</p>

<p>We should just have made a separate "tsk-&gt;tracer" pointer, instead of
continuing with the perverted "my parent is my tracer" logic. We shouldn't
really re-write the parent/child relationship just because we're being
traced.</p>

<p>I'd be happy to apply this patch (well, your fixed version), but I think I'd
prefer even more to make the whole reparenting go away, and keep the child list
valid all through the lifetime of a process. How painful could that be?</p>

</quote>

<p>Ingo replied, <quote who="Ingo Molnar">unless the ptrace interface is
reworked in an incompatible way, i cannot see how this would work.</quote>
He explained, <quote who="Ingo Molnar">the problem is that the tracing task
wants to do a wait4() on all traced children, and the only way to get that
is to have the traced tasks in the child list. Eg. strace -f traces a random
number of tasks, and after the PTRACE_CONTINUE call, the wait4 done by strace
must be able to 'get events' from pretty much any of the traced tasks.</quote>
Various folks discussed possible implementations, and at some point Linus said,
<quote who="Linus Torvalds">Ok, you've convinced me. The reparenting is fairly
ugly, but it sounds like other implementations would be fairly equivalent
and it would be mainly an issue of just which list we'd work on.</quote></p>

</section>

<section
  title="SUNRPC Maintainership"
  subject="SUNRPC maintainer"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.2/0568.html"
  posts="1"
  startdate="19 Aug 2002 08:02:31 -0800"
>
<topic>MAINTAINERS File</topic>
<topic>Maintainership</topic>

<mention>Chuck Lever</mention>

<p>Chuck Lever asked to be listed as the SUNRPC maintainer in the
/usr/src/linux/MAINTAINERS file.</p>

</section>

<section
  title="Support For vt8235 IDE Chip In 2.4"
  subject="Add support for vt8235 IDE for 2.4"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.2/0581.html"
  posts="1"
  startdate="19 Aug 2002 09:07:11 -0800"
>
<topic>Disks: IDE</topic>
<topic>Version Control</topic>

<p>Vojtech Pavlik posted a patch and announced:</p>

<quote who="Vojtech Pavlik">

<p>This adds support for the vt8235 IDE to the 2.4 kernel. Very needed,
because the chip is now starting to sell.</p>

<p>Same patch should also apply to 2.5.</p>

<p>You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual.</p>

</quote>

</section>

<section
  title="Maintainer List"
  subject="lk maintainers"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.2/0583.html"
  posts="1"
  startdate="19 Aug 2002 14:07:35 -0800"
>
<topic>Bug Tracking</topic>
<topic>Disk Arrays: RAID</topic>
<topic>Disks: IDE</topic>
<topic>Disks: SCSI</topic>
<topic>FS: NFS</topic>
<topic>FS: NTFS</topic>
<topic>FS: ReiserFS</topic>
<topic>FS: autofs</topic>
<topic>FS: devfs</topic>
<topic>FS: ext2</topic>
<topic>FS: ext3</topic>
<topic>FS: smbfs</topic>
<topic>Framebuffer</topic>
<topic>Hot-Plugging</topic>
<topic>I2O</topic>
<topic>Kernel Build System</topic>
<topic>Networking</topic>
<topic>PCI</topic>
<topic>Real-Time: RTLinux</topic>
<topic>Samba</topic>
<topic>Serial ATA</topic>
<topic>Software Suspend</topic>
<topic>Sound: ALSA</topic>
<topic>Spam</topic>
<topic>USB</topic>
<topic>Virtual Memory</topic>

<mention>Trond Myklebust</mention>
<mention>Arnaldo Carvalho de Melo</mention>
<mention>Alexander Viro</mention>
<mention>Hans Reiser</mention>
<mention>Rik van Riel</mention>
<mention>Linus Torvalds</mention>
<mention>Vojtech Pavlik</mention>
<mention>Geert Uytterhoeven</mention>
<mention>Jeff Garzik</mention>
<mention>Andre Hedrick</mention>
<mention>Greg KH</mention>
<mention>Jaroslav Kysela</mention>
<mention>Anton Altaparmakov</mention>
<mention>Tigran Aivazian</mention>
<mention>Martin J. Bligh</mention>
<mention>Arjan van de Ven</mention>
<mention>Eric S. Raymond</mention>
<mention>Mike Phillips</mention>
<mention>Oleg Drokin</mention>
<mention>H. Peter Anvin</mention>
<mention>Alan Cox</mention>
<mention>Pavel Machek</mention>
<mention>Dave Jones</mention>
<mention>Richard Gooch</mention>
<mention>Andrew Morton</mention>
<mention>Jens Axboe</mention>
<mention>Ingo Molnar</mention>
<mention>Victor Yodaiken</mention>
<mention>James Simmons</mention>
<mention>Tim Waugh</mention>
<mention>Rusty Russell</mention>
<mention>Gerd Knorr</mention>
<mention>Andrea Arcangeli</mention>
<mention>Martin Dalecki</mention>
<mention>David S. Miller</mention>
<mention>Rogier Wolff</mention>
<mention>Urban Widmark</mention>
<mention>Petr Vandrovec</mention>
<mention>Marcelo Tosatti</mention>
<mention>Neil Brown</mention>
<mention>Ralf Baechle</mention>
<mention>Russell King</mention>
<mention>Keith Owens</mention>
<mention>Robert Love</mention>
<mention>Maksim Krasnyanskiy</mention>

<p>Denis Vlasenko said:</p>

<quote who="Denis Vlasenko">

<p>This document is mailed to lkml regularly and will be modified whenever
new victim wishes to be listed in it or someone can no longer devote his
time to maintainer work.</p>

<p>If you want your entry added/updated/removed, contact me.</p>

<p>------- cut here ------ cut here ------ cut here ------ cut here ------</p>

<p>So, you are new to Linux kernel hacking and want to submit a kernel bug
report or a patch but don't know how to do it and _where_ to report it?</p>

<p>Preparing bug report:</p>

<p>Compile problems: report GCC output and result of "grep '^CONFIG_' .config"<br />
Oops: decode it with ksymoops<br />
Unkillable process: Alt-SysRq-T and ksymoops relevant part<br />
Yes it means you should have ksymoops installed and tested,
which is easy to get wrong. I've done that too often.</p>

<p>More info in the FAQ at <a
href="http://www.tux.org/lkml/">http://www.tux.org/lkml/</a></p>

<p>Sending bug report/patch:</p>

<p>

<ul>

<li>Some device drivers have active developers, try to contact them first.</li>
<li>Otherwise find a subsystem maintainer to which your report pertains
  and send report to his address.</li>
<li>Small fixes and device driver updates are best directed to subsystem
  maintainers and "small bits" integrators.</li>
<li>It never hurts to CC: Linux kernel mailing list, but without specific
  maintainer address in To: field there is high probability that your
  patch won't be noticed. You have been warned.</li>
<li>Do not send it to all addresses at once! This will annoy lots of people
  and isn't useful at all. It's a spam.</li>
<li>Do NOT send small fixes to Linus, he just can't handle _everything_.
  He will eventually receive it from maintainers/integrators, send it
  their way.</li>
<li>If your patch is something big and new, announce it on lkml and try
  to attract testers. After it has been tested and discussed, you can
  expect Linus to consider inclusion in mainline.</li>

</ul>

</p>

<p>                Current Linux kernel people</p>

<p>Note that this list is sorted in reversed date order, most recent
entries first. This means than entries at bottom can be outdated :-(</p>

<pre>Linux kernel mailing list &lt;linux-kernel@vger.kernel.org&gt;
        Post anything related to Linux kernel here, but nothing else :-)

Dave Engebretsen &lt;engebret@vnet.ibm.com&gt; [15 aug 2002]
        PPC64 architecture maintainer.  Please send PPC64 patches to me
        and our mailing list at &lt;linuxppc64-dev@lists.linuxppc.org&gt;

Ingo Molnar &lt;mingo@elte.hu&gt; [30 jul 2002]
        Ingo wrote the new scheduler for 2.5.

Ralf Baechle &lt;ralf@uni-koblenz.de&gt; [30 jul 2002]
        I am maintainer of the AX.25 code

Victor Yodaiken &lt;yodaiken@fsmlabs.com&gt; [30 jul 2002]
        RTLinux patches, updates, contributions, drivers.
        Please send first to the list: rtl@rtlinux.org

Pavel Machek &lt;pavel@ucw.cz&gt; [27 jul 2002]
        I am network block device maintainer. Visit <a href="http://nbd.sf.net">http://nbd.sf.net</a>.
        (see Steven Whitehouse &lt;steve@gw.chygwyn.com&gt; entry)
        I am working on software suspend.

William Irwin &lt;wli@holomorphy.com&gt; [02 jul 2002]
        Send bug reports and/or feature requests related to many tasks,
        rmap, space consumption, or allocators to me. I'm involved in
        * rmap
        * memory allocators
        * reducing space consumed by data structures (e.g. struct page)
        * issues arising in workloads with many tasks
        * kernel janitoring
        See also:
        Rik van Riel &lt;riel@surriel.com&gt;
        Andrea Arcangeli &lt;andrea@suse.de&gt;
        Martin Bligh &lt;Martin.Bligh@us.ibm.com&gt;
        Andrew Morton &lt;akpm@zip.com.au&gt;

Dave Jones &lt;davej@suse.de&gt; [23 apr 2002]
        I collect various bits and pieces for inclusion in 2.5,
        especially small and trivial ones and driver updates.
        I'll feed them to Linus when (and if) they
        are proved to be worthy.

Andre Hedrick &lt;andre@linux-ide.org&gt; [09 apr 2002]
        ATA/ATAPI Storage Architect [2.0,2.2,2.4]
        HBA interface developer
        Serial ATA Architect [future release]
        Voting NCITS member AT-Attachment Committee

Andrea Arcangeli &lt;andrea@suse.de&gt; [28 mar 2002]
        Send VM related bug reports and patches to me.
        I'm especially interested in VM issues with:
        * lots of RAM and CPUs
        * NUMA
        * heavy swap scenarios
        * performance of I/O intensive workloads (in particular
          with lots of async buffer flushing involved)
        See also Martin J. Bligh &lt;Martin.Bligh@us.ibm.com&gt; entry
        Mail also:
        Arjan van de Ven &lt;arjanv@redhat.com&gt;

Martin J. Bligh &lt;Martin.Bligh@us.ibm.com&gt; [28 mar 2002]
        I'm interested in VM issues with lots (&gt;4G for i386)
        of RAM, lots of CPUs, NUMA

Steven Whitehouse &lt;steve@chygwyn.com&gt; [27 mar 2002]
        I am the Linux DECnet network stack maintainer
        Visit <a href="http://www.chygwyn.com/decnet/">http://www.chygwyn.com/decnet/</a>

Arnaldo Carvalho de Melo &lt;acme@conectiva.com.br&gt; [26 mar 2002]
        IPX, 802.2 LLC, NetBEUI, <a href="http://kerneljanitors.org">http://kerneljanitors.org</a>,
        cyclom2x sync card driver

John Cagle &lt;jcagle@kernel.org&gt; [19 mar 2002]
        The current maintainer of devices.txt, the list of
        assigned device numbers for LANANA.  Consult the web
        site (www.lanana.org) for instructions on submitting
        requests for new device numbers.  Send all device
        related email to &lt;device@lanana.org&gt;.

Tigran Aivazian &lt;tigran@veritas.com&gt;
        I am author and maintainer of BFS filesystem and IA32
        microcode update driver.

Rogier Wolff &lt;R.E.Wolff@BitWizard.nl&gt; [12 mar 2002]
        I do "specialix serial ports":
        drivers/char/specialix.c (IO8+)
        drivers/char/sx.c        (SX, SI, SIO)
        drivers/char/rio/*.c     (RIO)

Martin Dalecki &lt;martin@dalecki.de&gt; [11 mar 2002]
        IDE subsystem maintainer for 2.5
        (mail Vojtech Pavlik &lt;vojtech@suse.cz&gt; too)

Ed Vance &lt;serial24@macrolink.com&gt; [05 mar 2002]
        Maintainer for the generic serial driver, serial.c,
        for 2.2 and 2.4 kernels.  Please post patches to
        linux-serial@vger.kernel.org for tested bug
        fixes or to add support for a new serial device.
        Limited to time available. If I have not responded
        in a week, yell at serial24@macrolink.com

netfilter/iptables development &lt;netfilter-devel@lists.samba.org&gt; [23 feb 2002]
        Please report all netfilter/iptables related problems
        to this mailinglist, where all netfilter developers are present.
        See also <a href="http://www.netfilter.org/contact.html">http://www.netfilter.org/contact.html</a>

Hans Reiser &lt;reiser@namesys.com&gt; [16 feb 2002]
        Send me all reiserfs related patches with a cc to
        reiserfs-dev@namesys.com, send bug reports to
        reiserfs-dev@namesys.com, send paid support requests to
        support@namesys.com after going to www.namesys.com/support.html
        to pay, send discussions (not bug reports unless they are
        interesting to most persons) to reiserfs-list@namesys.com.
        If we sit on your patch for a week without responding,
        yell at us, we deserve it.  Look at our web page
        at www.namesys.com for more about sending us code,
        working with us, and our patch submission and tracking system.

Paul Bristow &lt;paul@paulbristow.net&gt; [16 feb 2002]
        I am an ide-floppy driver maintainer
        (ATAPI ZIP, LS-120/240 Superdisk, Clik! drives).

Mike Phillips &lt;phillim2@comcast.net&gt; [15 feb 2002]
        Token ring subsystem and drivers.

Anton Altaparmakov &lt;aia21@cam.ac.uk&gt; [15 feb 2002]
        I am the NTFS guy.

<a href="https://bugzilla.redhat.com/bugzilla">https://bugzilla.redhat.com/bugzilla</a> [14 feb 2002]
        Reports of problems with the Red Hat shipped kernels.

Alan Cox &lt;alan@lxorguk.ukuu.org.uk&gt; [14 feb 2002]
        Linux 2.2 maintainer (maintenance fixes only).
        Collator of patches for unmaintained things in 2.2/2.4.
        Maintainer of the 2.4-ac (2.4 plus stuff being tested) tree.
        I2O, sound, 3c501 maintainer for 2.2/2.4.

Robert Love &lt;rml@tech9.net&gt; [14 feb 2002]
        Preemptible kernel is mine.

ALSA development &lt;alsa-devel@alsa-project.org&gt; [12 feb 2002]
Jaroslav Kysela &lt;perex@perex.cz&gt; [12 feb 2002]
        Advanced Linux Sound Architecture
        ALSA patches are available at
        ftp://ftp.alsa-project.org/pub/kernel-patches/*

Neil Brown &lt;neilb@cse.unsw.edu.au&gt; [08 feb 2002]
        I am interested in any issues with the code in:
        NFS server    (fs/nfsd/*)
        software RAID (drivers/md/{md,raid,linear}*)
        or related include files.

Maksim Krasnyanskiy &lt;maxk@qualcomm.com&gt; [08 feb 2002]
        I'm author and maintainer of the Bluetooth subsystem
        and Universal TUN/TAP device driver.
        These days mostly working on Bluetooth stuff.

Rik van Riel &lt;riel@conectiva.com.br&gt; [07 feb 2002]
        Send me VM related stuff, please CC to linux-mm@kvack.org

Geert Uytterhoeven &lt;geert@linux-m68k.org&gt; [07 feb 2002]
        I work on the frame buffer subsystem, the m68k port (Amiga part),
        and the PPC port (CHRP LongTrail part).
        Unfortunately I barely have spare time to really work on these
        things. My job is not Linux-related (so far :-). I can not
        promise anything about my maintainership performance.

H. Peter Anvin &lt;hpa@zytor.com&gt; [07 feb 2002]
        i386 boot and feature code, i386 boot protocol, autofs3,
        compressed iso9660 (but I'll accept all iso9660-related
        changes.)  kernel.org site manager; please contact me
        for sponsorship-related issues.

kernel.org admins &lt;ftpadmin@kernel.org&gt; [07 feb 2002]
        Kernel.org sysadmins.  Contact us if you notice something breaks,
        or if you want a change make sure you give us at least 1-2 weeks.
        Please note that we got a lot of feature requests, a lot of
        which conflict or simply aren't practical; we don't have time to
        respond to all requests.

Greg KH &lt;greg@kroah.com&gt; [07 feb 2002]
        I am USB and PCI Hotplug maintainer.

Trond Myklebust &lt;trond.myklebust@fys.uio.no&gt; [07 feb 2002]
        I am NFS client maintainer.

James Simmons &lt;jsimmons@transvirtual.com&gt; [07 feb 2002]
        Console and framebuffer sybsustems.
        I also play around with the input layer.

Richard Gooch &lt;rgooch@atnf.csiro.au&gt; [07 feb 2002]
        I maintain devfs. I want people to Cc: me when reporting devfs
        problems, since I don't read all messages on linux-kernel.
        Send devfs related patches to me directly, rather than
        bypassing me and sending to Linus/Marcelo/Alan/Dave etc.

Russell King &lt;rmk@arm.linux.org.uk&gt; [06 feb 2002]
        ARM architecture maintainer.  Please send all ARM patches through
        the patch system at <a href="http://www.arm.linux.org.uk/developer/patches/">http://www.arm.linux.org.uk/developer/patches/</a>
        New serial drivers maintainer for 2.5.  Submit patches to
        rmk+serial@arm.linux.org.uk

Andrew Morton &lt;akpm@zip.com.au&gt; [05 feb 2002]
        I'm receptive to any reproducible bug anywhere in the 2.4 kernel.
        Specialising in ext2, ext3 and network drivers.
        Not thinking about 2.5.x at this time.

Petr Vandrovec &lt;vandrove@vc.cvut.cz&gt; [05 feb 2002]
        ncpfs filesystem, matrox framebuffer driver, problems related
        to VMware - in all of 2.2.x, 2.4.x and 2.5.x.

Reiserfs developers list &lt;reiserfs-dev@namesys.com&gt; [05 feb 2002]
        Send all reiserfs-related stuff here including but not limited to bug
        reports, fixes, suggestions.

Oleg Drokin &lt;green@linuxhacker.ru&gt; [05 feb 2002]
        SA11x0 USB-ethernet and SA11x0 watchdog are mine.

Vojtech Pavlik &lt;vojtech@ucw.cz&gt; [05 feb 2002]
        Feel free to send me bug reports and patches to input device drivers
        (drivers/input/*, drivers/char/joystick/*)
        I also want to receive bug reports and patches for following
        USB drivers: printer, acm, catc, hid*, usbmouse, usbkbd, wacom.
        All other (not in the list) USB driver changes should go to USB
        maintainer (hopefully there is one listed here :-).
        Also CC me if you are posting VIA IDE driver related message
        (although I am not IDE subsystem maintainer).

======= These entries are suggested by lkml folks ========

Ralf Baechle &lt;ralf@gnu.org&gt; [27 mar 2002]
        I am mips/mips64 maintainer.

David S. Miller &lt;davem@redhat.com&gt; [07 feb 2002]
        I am Sparc64 and networking core maintainer.

======= These ones I made myself ========
======= I am waiting confirmation/correction from these people ========

Urban Widmark &lt;urban@teststation.com&gt; [13 feb 2002]
        smbfs

Jeff Garzik &lt;jgarzik@mandrakesoft.com&gt; [12 feb 2002]
        I am the network-card-drivers guy (8139 for instance).
        CC me and Andrew Morton &lt;akpm@zip.com.au&gt; on network driver patches.

video4linux list &lt;video4linux-list@redhat.com&gt; [12 feb 2002]
Gerd Knorr &lt;kraxel@bytesex.org&gt; [12 feb 2002]
        video4linux

Tim Waugh &lt;twaugh@redhat.com&gt; [08 feb 2002]
        &gt; Who is maintaining the linux iomega stuff?
        For 2.4.x, me (in theory). I don't have time for 2.5.x at the moment.

Alexander Viro &lt;viro@math.psu.edu&gt; [5 feb 2002]
        I am NOT a fs subsystem maintainer. But I won't kill
        you if you send me some generic fs bug reports and (hopefully) patches.

Eric S. Raymond &lt;esr@thyrsus.com&gt; [5 feb 2002]
        Send kernel configuration bug reports and suggestions to me.
        Also I'll be more than happy to accept help enties for kernel config
        options (Configure.help).

G?rard Roudier &lt;groudier@free.fr&gt; [5 feb 2002]
        I am SCSI guy.

Jens Axboe &lt;axboe@suse.de&gt; [5 feb 2002]
        I am block device subsystem maintainer.

Keith Owens &lt;kaos@ocs.com.au&gt; [5 feb 2002]
        ksymoops, kbuild, .. .. .. .. .  are mine.

Linus Torvalds &lt;torvalds@transmeta.com&gt; [5 feb 2002]
        Do not send anything to me unless it is for 2.5, well tested,
        discussed on lkml and is used by significant number of people.
        In general it is a bad idea to send me small fixes and driver
        updates, send them to subsystem maintainers and/or
        "small stuff" integrator (currently Dave Jones &lt;davej@suse.de&gt;,
        see his entry). Sorry, I can't do everything.

Marcelo Tosatti &lt;marcelo@conectiva.com.br&gt; [5 feb 2002]
        Do not send anything to me unless it is for 2.4 and well tested.
        If you are sending me small fixes and driver updates, send
        a copy to subsystem maintainers and/or "small stuff" integrators:
        - Alan Cox &lt;alan@lxorguk.ukuu.org.uk&gt;,
        - Rusty Russell &lt;trivial@rustcorp.com.au&gt;.

Rusty Russell &lt;rusty@rustcorp.com.au&gt; [5 feb 2002]
        Here are some cleanups of whitespace in .....
        Want me to add this to the trivial patch collection for tracking?
        If so just send (or cc:) it to trivial@rustcorp.com.au.</pre>

</quote>

</section>

<section
  title="Status Of 2.4 Virtual Memory Subsystem"
  subject="=?iso-8859-1?Q?Re: Linux 2.4.20-pre4?="
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.2/0708.html"
  posts="5"
  startdate="19 Aug 2002 17:55:40 -0800"
  enddate="19 Aug 2002 23:24:34 -0800"
>
<topic>Virtual Memory</topic>

<mention>Rik van Riel</mention>
<mention>Martin J. Bligh</mention>
<mention>Andrew Morton</mention>
<mention>Andrea Arcangeli</mention>

<p>Someone asked if Andrea Arcangeli's VM subsystem work from his -aa tree
would be merged into 2.4.20, or a later 2.4 kernel, or at all; and someone
else said they hoped it would be merged soon, as it seemed really great. Rik
van Riel said it wouldn't happen until someone split the huge -aa patch into
small self-contained pieces, in which case there was a good chance it would
be merged; Martin J. Bligh remarked that as far as he knew, Andrew Morton had
already done that. Someone else confirmed this; adding that 2.4.19 had received
some of those pieces, and that the rest were slated to go into 2.4.20.</p>

</section>

<section
  title="Preallocating Blocks On ReiserFS"
  subject="[bk] Reiserfs patch 1 of 1 for 2.4.20"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.2/0744.html"
  posts="1"
  startdate="20 Aug 2002 02:18:02 -0800"
>
<topic>FS: ReiserFS</topic>
<topic>Version Control</topic>

<mention>Oleg Drokin</mention>

<p>Hans Reiser announced, <quote who="Hans Reiser">Credit to Oleg Drokin.
This changeset enables preallocation of blocks on reiserfs filesystems
by default.  Prevents excessive interleaving of file layouts and
excessive calls to the allocator that can hurt performance, especially on
multiprocess workloads.  This simply restores the default to what was in
2.4.19 but using the new allocator code.  Please apply.  You can get it from
bk://thebsh.namesys.com/bk/reiser3-linux-2.4</quote></p>

</section>

<section
  title="devfs v199.16 Is Available"
  subject="[PATCH] devfs v199.16 available"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.2/0814.html"
  posts="1"
  startdate="20 Aug 2002 08:42:26 -0800"
>
<topic>FS: devfs</topic>

<p>Richard Gooch announced:</p>

<quote who="Richard Gooch">

<p>Version 199.16 of my devfs patch is now available from: <a
href="http://www.atnf.csiro.au/~rgooch/linux/kernel-patches.html">http://www.atnf.csiro.au/~rgooch/linux/kernel-patches.html</a>
The devfs FAQ is also available here.</p>

<p>Patch directly available from: <a
href="ftp://ftp.us.kernel.org/pub/linux/kernel/people/rgooch/v2.4/devfs-patch-current.gz">ftp://ftp.??.kernel.org/pub/linux/kernel/people/rgooch/v2.4/devfs-patch-current.gz</a></p>

<p>AND:</p>

<p><a
href="ftp://ftp.atnf.csiro.au/pub/people/rgooch/linux/kernel-patches/v2.4/devfs-patch-current.gz">ftp://ftp.atnf.csiro.au/pub/people/rgooch/linux/kernel-patches/v2.4/devfs-patch-current.gz</a></p>

<p>This is against 2.4.20-rc3. Highlights of this release:</p>

<p>

<ul>

<li>Fixed module unload race in &lt;devfs_open&gt;</li>

</ul>

</p>

</quote>

</section>

<section
  title="NTFS Update"
  subject="[BK-2.5 PATCH] NTFS 2.1.0 1/7: Add config option for writing"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.2/0890.html"
  posts="1"
  startdate="20 Aug 2002 15:43:11 -0800"
>
<topic>FS: NTFS</topic>
<topic>FS: ext3</topic>
<topic>Version Control</topic>

<mention>Andrew Morton</mention>
<mention>Richard Russon</mention>

<p>Anton Altaparmakov said:</p>

<quote who="Anton Altaparmakov">

<p>Linus, please do a</p>

<p>        bk pull http://linux-ntfs.bkbits.net/ntfs-2.5</p>

<p>Below is the 1st of 7 ChangeSets updating NTFS to 2.1.0, which you
will get when you bk pull the ntfs-2.5 repository. Together they implement
file overwrite support for NTFS.</p>

<p>This first ChangeSet is the only one touching files outside fs/ntfs/ and
the files touched are only the defconfig files and fs/Config.in and
fs/Config.help, which are updated adding a new configuration option for the
new write support.</p>

<p>The remaining ChangeSets add the actual write code in small chunks.</p>

<p>I would like to thank Andrew Morton and Al Viro for investing their time
and answering the numerous questions I had.   </p>

<p>Comments on the code would be appreciated, so get reading everyone. (-:</p>

<p>The current code is relatively well tested both for mmap(2) and write(2)
both using existing applications to randomly write to files and using
custom programs to do specialized writes to test boundary conditions.</p>

<p>Still the code has only been run on two machines, so people trying it,
please have backups! I am confident it won't eat your data, but I am not
willing to guarantee it! I have put in an appropriately very scary config
help message to scare off the casual user for the moment...</p>

<p>Features of NTFS 2.1.0</p>

<p>It is now possible to write over existing files both with mmap(2)
and write(2).</p>

<p>It is now possible to setup a loopback on an NTFS file and then you have
full read/write access to the loopback device. You can create a Linux fs
on the loop device for example and mount it.</p>

<p>This has been a much requested feature because it allows installation of
Linux on an NTFS partition using the loopback trick, i.e. from windows one
creates a large file on NTFS, then one boots Linux (from installation CD,
rescue floppies or whatever) and as root does:</p>

<p>mount -t ntfs -o rw /dev/hda1 /mnt/ntfs<br />
losetup /dev/loop0 /mnt/ntfs/some_dir/preprepared_large_file<br />
mke2fs -j /dev/loop0<br />
mount -t ext3 /dev/loop0 /mnt/new_root<br />
mkdir old_root<br />
&lt;install Linux into /mnt/new_root&gt;<br />
umount /mnt/new_root<br />
losetup -d /dev/loop0<br />
umount /mnt/ntfs</p>

<p>From now on, you can boot Linux and using a minimal ramdisk loaded via
floppy for example, one just needs to have something simillar to the
following done:</p>

<p>mount -t ntfs -o rw /dev/hda1 /mnt/ntfs<br />
mount -t ext3 -o loop /ntfs/some_dir/preprepared_large_file /mnt/new_root<br />
cd /mnt/new_root<br />
pivot_root . old_root<br />
exec chroot . sh &lt;dev/console &gt;dev/console 2&gt;&amp;1<br />
umount /old-root</p>

<p>[Note you probably cannot umount /old-root but it doesn't matter. It doesn't
disturb anyone... You could always hide it inside root/old_root or something
so users don't see it.]</p>

<p>I haven't actually tried to install Linux in the above way but Richard
Russon (flatcap) tested the loopback/mke2fs/read-write stuff and it
worked fine for him.</p>

<p>Limitations of NTFS 2.1.0 overwrite abilities</p>

<p>

<ul>

<li>Resident files only written to in memory so far, i.e. writes to files
  smaller than 1kiB won't be permanent. Warnings to that effect are shown
  via printk().</li>

<li>Filling in of holes/non-initialized areas is not supported yes.</li>

<li>File resize/truncate not implemented and actively trapped and aborted.</li>

</ul>

</p>

<p>Anyone who tries this new code please let me know how you get on...</p>

</quote>

</section>

<section
  title="Status Of 2.5 Kernel"
  subject="[STATUS 2.5]  August 21, 2002"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.2/0923.html"
  posts="1"
  startdate="20 Aug 2002 19:40:51 -0800"
>
<topic>Disks: IDE</topic>
<topic>FS: XFS</topic>
<topic>Feature Freeze</topic>
<topic>Serial ATA</topic>

<p>Guillaume Boissiere announced the <a
href="http://kernelnewbies.org/status/Status-21-Aug-2002.html">August 21
Status List</a>:</p>

<quote who="Guillaume Boissiere">

<p>In recent news, the 1.0 version of Serial ATA has been released, and XFS
is now available as a series of small patches for inclusion.</p>

<p>The details, as always, are at: <a
href="http://www.kernelnewbies.org/status/">http://www.kernelnewbies.org/status/</a></p>

<p>I also marked a number of projects that seem unlikely to be merged before
feature freeze in grey.  If you disagree, let me know.</p>

</quote>

</section>

<section
  title="devfs Version 217 Available"
  subject="[PATCH] devfs v217 available"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.2/0928.html"
  posts="1"
  startdate="20 Aug 2002 20:23:16 -0800"
>
<topic>FS: devfs</topic>

<p>Richard Gooch announced:</p>

<quote who="Richard Gooch">

<p>Version 217 of my devfs patch is now available from: <a
href="http://www.atnf.csiro.au/~rgooch/linux/kernel-patches.html">http://www.atnf.csiro.au/~rgooch/linux/kernel-patches.html</a>.
The devfs FAQ is also available here.</p>

<p>Patch directly available from: <a
href="ftp://ftp.us.kernel.org/pub/linux/kernel/people/rgooch/v2.5/devfs-patch-current.gz">ftp://ftp.??.kernel.org/pub/linux/kernel/people/rgooch/v2.5/devfs-patch-current.gz</a></p>

<p>AND: <a
href="ftp://ftp.atnf.csiro.au/pub/people/rgooch/linux/kernel-patches/v2.5/devfs-patch-current.gz">ftp://ftp.atnf.csiro.au/pub/people/rgooch/linux/kernel-patches/v2.5/devfs-patch-current.gz</a></p>

<p>NOTE: kernel 2.5.1 and later require devfsd-v1.3.19 or later.</p>

<p>This is against 2.5.31. Highlights of this release:</p>

<p>

<ul>

<li>Exported &lt;devfs_find_and_unregister&gt; and &lt;devfs_only&gt; to
modules</li>

<li>Updated README from master HTML file</li>

<li>Fixed module unload race in &lt;devfs_open&gt;</li>

</ul>

</p>

</quote>

</section>

<section
  title="IPMI Driver For 2.4"
  subject="[patch] IPMI driver for Linux"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.2/1013.html"
  posts="5"
  startdate="21 Aug 2002 07:47:30 -0800"
  enddate="21 Aug 2002 12:53:01 -0800"
>

<p>Corey Minyard announced:</p>

<quote who="Corey Minyard">

<p>I have been working on an IPMI driver for Linux for MontaVista, and I
think it's ready to see the light of day :-).  I would like to see this
included in the mainstream kernel eventually.   You can get it at <a
href="http://home.attbi.com/~minyard">http://home.attbi.com/~minyard</a>.
It should work on any kernel version, although you will have to fix up the
Config.in and Makefile, and the Configure.help stuff may not work (it's
currently in the 2.4 location).</p>

<p>The web page has documentation on the driver, and documentation is included
in the patch, too.  This is a fairly full-featured driver with a watchdog,
panic event generation, full kernel and userland access to the driver,
multi-user/multi-interface support, and emulators for other IPMI device
drivers.</p>

</quote>

<p>Alan Cox had some specific complaints, but added, <quote who="Alan
Cox">its way way way nicer than the hideous thing a certain chip vendor
sent me.</quote></p>

<p>Larry Butler said he'd been working on his own version of the same driver. He
said:</p>

<quote who="Larry Butler">

<p>I've been working on a driver too because the busy waits in the drivers that
are out there can hold a CPU for too long.  I've measured as much as 120ms.</p>

<p>First I tried sleeping in the driver until the very next jiffy.  I found
that my driver became unreliable under high CPU load because the scheduling
delays were too long.  I even managed wedge the BMC on one of my test systems
in a way I can't seem to fix. :)  </p>

<p>What I finally settled on was using the timer interrupt.  This seems to
work well both in terms of being nice to the rest of the system (I register
a shared irq handler only while I need it) and being reliable even under
high load.   So, just consider it a suggestion.  I'd like to see your driver
included too.  It's certainly more complete than mine.  You must have access
to more documentation than I do.</p>

</quote>

<p>And Corey replied:</p>

<quote who="Corey Minyard">

<p>I tie into the highres timer code for short sleeps.  It does require that
you have highres timers installed in your kernel and enabled.  Otherwise you
are right, it is very slow.</p>

<p>Since I had access to highres timers, that was a lot easier than hooking
into and configuring the timer interrupt, and a lot more portable, too.</p>

<p>If you want to post your code or modify mine to add the timer interrupt
support, that would be great.</p>

</quote>

</section>

<section
  title="Plan For IDE In 2.5"
  subject="2.5 IDE Whitepaper?"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0208.2/1048.html"
  posts="3"
  startdate="21 Aug 2002 10:38:07 -0800"
  enddate="21 Aug 2002 15:51:52 -0800"
>
<topic>Disks: IDE</topic>
<topic>Hot-Plugging</topic>
<topic>PCI</topic>

<p>Paul Bennett asked, <quote who="Paul Bennett">I am looking for documentation
regarding the 2.5 IDE rewrite.  For example: What are the goals for 2.5.
What is the implementation plan?  What were the problems in 2.4, and how
will they be fixed in 2.5, etc?</quote> Jeff Garzik replied:</p>

<quote who="Jeff Garzik">

&lt;chuckle&gt;  I w