<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="215" date="09 May 2003 00:00:00 -0800" />

<intro>Sorry about the delays in recent issues, folks. I've been preoccupied
with non-KT stuff. Hopefully the schedule anomalies will be easing up
soon. I'd like to thank all the folks who emailed their support and
encouragement.</intro>

<stats posts="3335" size="15443" contrib="734" multiples="383" lastweek="216">

<person posts="109" size="581" who="Greg KH" />
<person posts="107" size="320" who="Alan Cox" />
<person posts="84" size="276" who="Chuck Ebbert" />
<person posts="82" size="358" who="&quot;Martin J. Bligh&quot;" />
<person posts="76" size="268" who="Andrew Morton" />
<person posts="73" size="233" who="John Bradford" />
<person posts="52" size="167" who="Christoph Hellwig" />
<person posts="49" size="165" who="Jeff Garzik" />
<person posts="47" size="239" who="(Andries.Brouwer)" />
<person posts="46" size="160" who="&quot;H. Peter Anvin&quot;" />
<person posts="41" size="157" who="Linus Torvalds" />
<person posts="40" size="152" who="William Lee Irwin III" />
<person posts="38" size="146" who="&quot;Richard B. Johnson&quot;" />
<person posts="36" size="173" who="(Valdis.Kletnieks)" />
<person posts="36" size="122" who="&quot;Randy.Dunlap&quot;" />
<person posts="33" size="185" who="Andi Kleen" />
<person posts="32" size="129" who="Stephan von Krawczynski" />
<person posts="30" size="154" who="Christoph Hellwig" />
<person posts="28" size="103" who="Ben Collins" />
<person posts="27" size="155" who="Bartlomiej Zolnierkiewicz" />
<person posts="26" size="99" who="Pavel Machek" />
<person posts="25" size="97" who="=?iso-8859-1?Q?J=F6rn?= Engel" />
<person posts="24" size="123" who="Felipe Alfaro Solana" />
<person posts="24" size="114" who="&quot;Perez-Gonzalez, Inaky&quot;" />
<person posts="23" size="147" who="Stephen Smalley" />
<person posts="23" size="83" who="Timothy Miller" />
<person posts="23" size="69" who="Jamie Lokier" />
<person posts="21" size="163" who="Grzegorz Jaskiewicz" />
<person posts="21" size="72" who="Werner Almesberger" />
<person posts="21" size="71" who="Arjan van de Ven" />
<person posts="21" size="69" who="Dave Jones" />
<person posts="21" size="53" who="&quot;David S. Miller&quot;" />
<person posts="20" size="65" who="Bill Davidsen" />
<person posts="20" size="64" who="(viro)" />
<person posts="19" size="103" who="Russell King" />
<person posts="18" size="72" who="Benjamin Herrenschmidt" />
<person posts="17" size="118" who="David van Hoose" />
<person posts="16" size="87" who="Ingo Molnar" />
<person posts="15" size="74" who="Pavel Roskin" />
<person posts="15" size="65" who="Stelian Pop" />
<person posts="15" size="54" who="Nick Piggin" />
<person posts="14" size="57" who="Manfred Spraul" />
<person posts="14" size="48" who="Larry McVoy" />
<person posts="14" size="45" who="Roman Zippel" />
<person posts="14" size="43" who=" (=?iso-8859-1?q?M=E5ns_Rullg=E5rd?=)" />
<person posts="14" size="38" who="Robert Love" />
<person posts="13" size="132" who=" (Florin Iucha)" />
<person posts="13" size="67" who="Max Krasnyansky" />
<person posts="13" size="65" who="Jens Axboe" />
<person posts="13" size="60" who="Andreas Dilger" />
<person posts="13" size="59" who="Rusty Russell" />
<person posts="13" size="52" who="Geert Uytterhoeven" />
<person posts="13" size="45" who="Chris Wright" />
<person posts="13" size="41" who="Marc-Christian Petersen" />
<person posts="12" size="82" who="Art Haas" />
<person posts="12" size="53" who="Denis Vlasenko" />
<person posts="12" size="49" who="Zwane Mwaikambo" />
<person posts="12" size="34" who="Andrew Kirilenko" />
<person posts="12" size="32" who="Andi Kleen" />
<person posts="11" size="78" who="Junfeng Yang" />
<person posts="11" size="58" who="Philippe =?ISO-8859-15?Q?Gramoull=E9?=" />
<person posts="11" size="37" who="David Mosberger" />
<person posts="11" size="35" who="Andries Brouwer" />
<person posts="10" size="52" who="Michael Buesch" />
<person posts="10" size="38" who="Nigel Cunningham" />
<person posts="10" size="32" who="Pavel Machek" />
<person posts="10" size="31" who="(mikpe)" />
<person posts="9" size="102" who="Alan Cox" />
<person posts="9" size="78" who="Suparna Bhattacharya" />
<person posts="9" size="33" who="Marcelo Tosatti" />
<person posts="9" size="33" who="Patrick Mansfield" />
<person posts="9" size="33" who="Carl-Daniel Hailfinger" />
<person posts="9" size="32" who="Helge Hafting" />
<person posts="9" size="29" who="Shachar Shemesh" />
<person posts="9" size="27" who="Antonio Vargas" />
<person posts="8" size="67" who="=?ISO-8859-1?Q?xos=E9_v=E1zquez_p=E9rez?=" />
<person posts="8" size="62" who="CaT" />
<person posts="8" size="54" who="Dave Olien" />
<person posts="8" size="54" who="Bill Nottingham" />
<person posts="8" size="52" who="Steven Cole" />
<person posts="8" size="46" who="Gert Vervoort" />
<person posts="8" size="31" who="Andre Hedrick" />
<person posts="8" size="27" who="joe briggs" />
<person posts="8" size="25" who="Pat Suwalski" />
<person posts="7" size="92" who="Marc Zyngier" />
<person posts="7" size="83" who="Andrei Ivanov" />
<person posts="7" size="68" who="Thomas Schlichter" />
<person posts="7" size="49" who="Maciej Soltysiak" />
<person posts="7" size="37" who="Karim Yaghmour" />
<person posts="7" size="33" who="Muli Ben-Yehuda" />
<person posts="7" size="33" who="James Morris" />
<person posts="7" size="30" who="Andrea Arcangeli" />
<person posts="7" size="29" who="jamal" />
<person posts="7" size="29" who="Joel Becker" />
<person posts="7" size="28" who="Gabriel Paubert" />
<person posts="7" size="28" who="&quot;Paolo Ciarrocchi&quot;" />
<person posts="7" size="27" who="DevilKin" />
<person posts="7" size="24" who="rmoser" />
<person posts="7" size="23" who="Erik Andersen" />
<person posts="7" size="21" who="Oliver Neukum" />
<person posts="7" size="21" who="Trond Myklebust" />
<person posts="7" size="19" who="Bruce Harada" />
<person posts="7" size="17" who="&quot;Dave Mehler&quot;" />
<person posts="6" size="68" who="&quot;Henning P. Schmiedehausen&quot;" />
<person posts="6" size="65" who="Daniel McNeil" />
<person posts="6" size="44" who="Paul Fulghum" />
<person posts="6" size="41" who="&quot;Robert White&quot;" />
<person posts="6" size="36" who="Martin Hicks" />
<person posts="6" size="32" who="Tom Zanussi" />
<person posts="6" size="29" who="Oleg Drokin" />
<person posts="6" size="27" who="&quot;Brien&quot;" />
<person posts="6" size="26" who="Matthew Wilcox" />
<person posts="6" size="23" who="walt" />
<person posts="6" size="23" who="Pau Aliagas" />
<person posts="6" size="22" who="Matthias Schniedermeyer" />
<person posts="6" size="21" who="Jean Tourrilhes" />
<person posts="6" size="21" who="Patrick Mochel" />
<person posts="6" size="20" who="Hugh Dickins" />
<person posts="6" size="20" who="Tomas Szepe" />
<person posts="6" size="20" who="&quot;Kevin P. Fleming&quot;" />
<person posts="6" size="19" who="Christian Staudenmayer" />
<person posts="6" size="18" who="Oleg Drokin" />
<person posts="6" size="17" who="Benjamin LaHaise" />
<person posts="6" size="17" who="&quot;Paul Rolland&quot;" />
<person posts="6" size="16" who="war" />
<person posts="6" size="16" who="Stephen Hemminger" />
<person posts="6" size="16" who="Frode Isaksen" />
<person posts="5" size="96" who="Lucas Correia Villa Real" />
<person posts="5" size="63" who="Nick Urbanik" />
<person posts="5" size="58" who="David Gibson" />
<person posts="5" size="35" who="Duncan Sands" />
<person posts="5" size="34" who="Arnaldo Carvalho de Melo" />
<person posts="5" size="33" who="Manuel Estrada Sainz" />
<person posts="5" size="31" who="Bernhard Kaindl" />
<person posts="5" size="26" who="&quot;Riley Williams&quot;" />
<person posts="5" size="24" who="Duncan Laurie" />
<person posts="5" size="23" who="john stultz" />
<person posts="5" size="22" who="Adrian Bunk" />
<person posts="5" size="21" who="Ulrich Drepper" />
<person posts="5" size="21" who="Daniel Stekloff" />
<person posts="5" size="20" who="Hanna Linder" />
<person posts="5" size="20" who="James Courtier-Dutton" />
<person posts="5" size="20" who="Stephen Satchell" />
<person posts="5" size="19" who="Catalin BOIE" />
<person posts="5" size="19" who="&quot;Petr Vandrovec&quot;" />
<person posts="5" size="17" who="Alex Riesen" />
<person posts="5" size="17" who="David Brownell" />
<person posts="5" size="15" who="&quot;Mudama, Eric&quot;" />
<person posts="5" size="15" who="Pascal Schmidt" />
<person posts="5" size="15" who="Zack Brown" />
<person posts="5" size="14" who="Gabriel Devenyi" />
<person posts="5" size="13" who="Axel Siebenwirth" />
<person posts="5" size="13" who="&quot;jds&quot;" />
<person posts="5" size="12" who="Balram Adlakha" />
<person posts="4" size="83" who="Athanasius" />
<person posts="4" size="59" who="Jurriaan" />
<person posts="4" size="47" who=" (Miles Bader)" />
<person posts="4" size="39" who="Roland McGrath" />
<person posts="4" size="25" who="&quot;Nakajima, Jun&quot;" />
<person posts="4" size="22" who="Andy Pfiffer" />
<person posts="4" size="21" who="=?ISO-8859-1?Q?Mika_Penttil=E4?=" />
<person posts="4" size="21" who="Stuffed Crust" />
<person posts="4" size="20" who="Joseph Pingenot" />
<person posts="4" size="20" who="&quot;Miller, Mike (OS Dev)&quot;" />
<person posts="4" size="18" who="Jan Harkes" />
<person posts="4" size="18" who="Paul Mackerras" />
<person posts="4" size="17" who="(mikem)" />
<person posts="4" size="17" who="Ernie Petrides" />
<person posts="4" size="17" who="Olivier Bornet" />
<person posts="4" size="17" who="&quot;Mukker, Atul&quot;" />
<person posts="4" size="17" who="richard offer" />
<person posts="4" size="16" who="Willy Tarreau" />
<person posts="4" size="16" who="Jean Delvare" />
<person posts="4" size="15" who="Udo Hoerhold" />
<person posts="4" size="15" who="Rick Lindsley" />
<person posts="4" size="15" who="Anton Altaparmakov" />
<person posts="4" size="15" who="Mika Kukkonen" />
<person posts="4" size="15" who="&quot;Grover, Andrew&quot;" />
<person posts="4" size="15" who="Mads Christensen" />
<person posts="4" size="15" who="Matti Aarnio" />
<person posts="4" size="14" who="Nikita Danilov" />
<person posts="4" size="14" who="&quot;Stephen C. Tweedie&quot;" />
<person posts="4" size="14" who="Marc Giger" />
<person posts="4" size="14" who="Tobias Brox" />
<person posts="4" size="13" who="&quot;Dr. David Alan Gilbert&quot;" />
<person posts="4" size="13" who="Dave Hansen" />
<person posts="4" size="13" who="Tabris" />
<person posts="4" size="13" who="David Glance" />
<person posts="4" size="13" who="James Strandboge" />
<person posts="4" size="12" who="Sean Neakums" />
<person posts="4" size="12" who="jjs" />
<person posts="4" size="12" who="Ricardo Galli" />
<person posts="4" size="12" who="Herman Oosthuysen" />
<person posts="4" size="12" who=" (Kai Henningsen)" />
<person posts="4" size="12" who="Ruth Ivimey-Cook" />
<person posts="4" size="12" who="Nick Orlov" />
<person posts="4" size="12" who="Arador" />
<person posts="4" size="12" who="Pete Zaitcev" />
<person posts="4" size="11" who="Kai Germaschewski" />
<person posts="4" size="11" who="David Ford" />
<person posts="4" size="11" who="chas williams" />
<person posts="3" size="111" who="Matthias Andree" />
<person posts="3" size="41" who="Mike Galbraith" />
<person posts="3" size="36" who="Alex Tomas" />
<person posts="3" size="28" who="Nicolas" />
<person posts="3" size="25" who="(cb-lkml)" />
<person posts="3" size="25" who="Olaf Hering" />
<person posts="3" size="24" who="(rwhron)" />
<person posts="3" size="24" who="Corey Minyard" />
<person posts="3" size="21" who="Pierfrancesco Caci" />
<person posts="3" size="21" who="Rik van Riel" />
<person posts="3" size="20" who="george anzinger" />
<person posts="3" size="19" who="Lukasz Trabinski" />
<person posts="3" size="19" who="Alistair Strachan" />
<person posts="3" size="17" who="Con Kolivas" />
<person posts="3" size="16" who="Lukasz Trabinski" />
<person posts="3" size="14" who="Arnd Bergmann" />
<person posts="3" size="14" who="John Cherry" />
<person posts="3" size="14" who="Christopher Swingley" />
<person posts="3" size="13" who="&quot;Prasanta Sadhukhan&quot;" />
<person posts="3" size="13" who="Andrew Theurer" />
<person posts="3" size="13" who="&quot;Kenny Mann&quot;" />
<person posts="3" size="13" who="=?iso-8859-1?q?Yours=20Lovingly?=" />
<person posts="3" size="12" who="John v/d Kamp" />
<person posts="3" size="12" who="Rene Rebe" />
<person posts="3" size="12" who="Harald Welte" />
<person posts="3" size="11" who="Hermann Himmelbauer" />
<person posts="3" size="11" who="Roland Kuhn" />
<person posts="3" size="11" who="&quot;Hemmann, Volker Armin&quot;" />
<person posts="3" size="11" who="Miles Bader" />
<person posts="3" size="11" who="Andreas Gietl" />
<person posts="3" size="11" who="Petr Vandrovec" />
<person posts="3" size="11" who=" (Johannes Ruscheinski)" />
<person posts="3" size="11" who="jw schultz" />
<person posts="3" size="11" who=" (Linus Torvalds)" />
<person posts="3" size="11" who="&quot;Cameron, Steve&quot;" />
<person posts="3" size="10" who="&quot;Robert P. J. Day&quot;" />
<person posts="3" size="10" who="Richard Zidlicky" />
<person posts="3" size="10" who="&quot;J.A. Magallon&quot;" />
<person posts="3" size="10" who="Paul Clements" />
<person posts="3" size="10" who="Scott Robert Ladd" />
<person posts="3" size="10" who="Jan-Benedict Glaw" />
<person posts="3" size="10" who="YOSHIFUJI Hideaki / =?iso-2022-jp?B?GyRCNUhGIzFRTEAbKEI=?=" />
<person posts="3" size="9" who="&quot;rain.wang&quot;" />
<person posts="3" size="9" who="Benson Chow" />
<person posts="3" size="9" who="Frank Davis" />
<person posts="3" size="9" who="Jakub Jelinek" />
<person posts="3" size="9" who="Stewart Smith" />
<person posts="3" size="9" who="Jes Sorensen" />
<person posts="3" size="9" who=" (Don Cohen)" />
<person posts="3" size="9" who="&quot;Downing, Thomas&quot;" />
<person posts="3" size="9" who="Matt Mackall" />
<person posts="3" size="9" who="Matt Reppert" />
<person posts="3" size="9" who="&quot;Leonard Milcin, Jr&quot;" />
<person posts="3" size="8" who="Eric Valette" />
<person posts="3" size="8" who="J Sloan" />
<person posts="3" size="8" who="Eyal Lebedinsky" />
<person posts="3" size="8" who="Francois Romieu" />
<person posts="3" size="8" who="Brett" />
<person posts="3" size="8" who="&quot;Maciej W. Rozycki&quot;" />
<person posts="3" size="8" who="&quot;Subodh S&quot;" />
<person posts="3" size="8" who="Nir Livni" />
<person posts="3" size="7" who="Lamont Granquist" />
<person posts="3" size="7" who="(jlnance)" />
<person posts="3" size="7" who="&quot;ramands&quot;" />
<person posts="2" size="95" who="Kai Germaschewski" />
<person posts="2" size="58" who="Raptorfan" />
<person posts="2" size="43" who="&quot;Jim Keniston[UNIX]&quot;" />
<person posts="2" size="43" who="Norbert Tretkowski" />
<person posts="2" size="27" who="Eric Northup" />
<person posts="2" size="25" who="Arno Wilhelm" />
<person posts="2" size="21" who="Walter Hofmann" />
<person posts="2" size="20" who="Marek Habersack" />
<person posts="2" size="19" who="Nils Holland" />
<person posts="2" size="17" who="Stacy Woods" />
<person posts="2" size="17" who="(root)" />
<person posts="2" size="17" who="&quot;Sowmya Adiga&quot;" />
<person posts="2" size="16" who="Vagn Scott" />
<person posts="2" size="15" who="&quot;Kendall Bennett&quot;" />
<person posts="2" size="13" who="Stelian Pop" />
<person posts="2" size="13" who="Paul Clements" />
<person posts="2" size="13" who="&quot;Seshadri, Harinarayanan&quot;" />
<person posts="2" size="13" who="Willy TARREAU" />
<person posts="2" size="12" who="(lk)" />
<person posts="2" size="11" who="&quot;Aniruddha M Marathe&quot;" />
<person posts="2" size="11" who="Toplica =?utf-8?q?Tanaskovi=C4=87?=" />
<person posts="2" size="11" who="Dave Peterson" />
<person posts="2" size="11" who="Garrett Kajmowicz" />
<person posts="2" size="10" who="steven roemen" />
<person posts="2" size="10" who="Michael Clark" />
<person posts="2" size="10" who="DevilKin-LKML" />
<person posts="2" size="10" who="Shaya Potter" />
<person posts="2" size="10" who="Thunder Anklin" />
<person posts="2" size="10" who="&quot;Randy.Dunlap&quot;" />
<person posts="2" size="9" who="David Howells" />
<person posts="2" size="9" who="Elladan" />
<person posts="2" size="9" who="Yusuf Wilajati Purna" />
<person posts="2" size="9" who="bob" />
<person posts="2" size="9" who="Steve Kinneberg" />
<person posts="2" size="9" who="Alexander Atanasov" />
<person posts="2" size="9" who="Jan Kara" />
<person posts="2" size="9" who="Lionel Bouton" />
<person posts="2" size="9" who="mbs" />
<person posts="2" size="8" who="Matthew Dharm" />
<person posts="2" size="8" who="Petr Konecny" />
<person posts="2" size="8" who="Chris Friesen" />
<person posts="2" size="8" who="&quot;Mathur, Shobhit&quot;" />
<person posts="2" size="8" who="&quot;Joseph Fannin&quot;" />
<person posts="2" size="8" who="&quot;Bobby Singh&quot;" />
<person posts="2" size="8" who="Schwarzseher" />
<person posts="2" size="8" who="Jae-Young Kim" />
<person posts="2" size="8" who="John M Flinchbaugh" />
<person posts="2" size="8" who="Siim Vahtre" />
<person posts="2" size="7" who="David Gibson" />
<person posts="2" size="7" who="Neil Schemenauer" />
<person posts="2" size="7" who="James Bottomley" />
<person posts="2" size="7" who="Oliver Feiler" />
<person posts="2" size="7" who="Eli Carter" />
<person posts="2" size="7" who="&quot;Murray J. Root&quot;" />
<person posts="2" size="7" who="(folkert)" />
<person posts="2" size="7" who="Peter Benie" />
<person posts="2" size="7" who="Steffen Moser" />
<person posts="2" size="7" who="(Roger.Ling)" />
<person posts="2" size="7" who="Rusty Trivial Russell" />
<person posts="2" size="7" who="Tim Connors" />
<person posts="2" size="7" who="Gregoire Favre" />
<person posts="2" size="6" who="William Stearns" />
<person posts="2" size="6" who="Scott Lee" />
<person posts="2" size="6" who="Bernd Petrovitsch" />
<person posts="2" size="6" who="Jaroslav Kysela" />
<person posts="2" size="6" who="Jens Axboe" />
<person posts="2" size="6" who="Christoph Pleger" />
<person posts="2" size="6" who="Ian Jackson" />
<person posts="2" size="6" who="Andreas Metzler" />
<person posts="2" size="6" who="Mingming Cao" />
<person posts="2" size="6" who="Martin Schlemmer" />
<person posts="2" size="6" who="&quot;Michael Daskalov&quot;" />
<person posts="2" size="6" who="Paul Larson" />
<person posts="2" size="6" who="James Stevenson" />
<person posts="2" size="6" who="Gerrit Huizenga" />
<person posts="2" size="6" who="Artjom Simon" />
<person posts="2" size="6" who="Sven Krohlas" />
<person posts="2" size="6" who="Daniel Phillips" />
<person posts="2" size="6" who="Nir Livni" />
<person posts="2" size="6" who="John Jasen" />
<person posts="2" size="6" who="Jurjen Oskam" />
<person posts="2" size="6" who="Joe Korty" />
<person posts="2" size="6" who="Eric Altendorf" />
<person posts="2" size="6" who="Daniel Egger" />
<person posts="2" size="6" who="gordon anderson" />
<person posts="2" size="6" who="&quot;Pedro Requejo&quot;" />
<person posts="2" size="5" who="&quot;Gabor Z. Papp&quot;" />
<person posts="2" size="5" who="Greg Ungerer" />
<person posts="2" size="5" who="&quot;Timothy Miller&quot;" />
<person posts="2" size="5" who="Fabio Massimo Di Nitto" />
<person posts="2" size="5" who="Pawan Deepika" />
<person posts="2" size="5" who="Jeffrey Baker" />
<person posts="2" size="5" who="Stephane Ouellette" />
<person posts="2" size="5" who="Jon Masters" />
<person posts="2" size="5" who=" (Eric W. Biederman)" />
<person posts="2" size="5" who="&quot;Wojciech Sobczak&quot;" />
<person posts="2" size="5" who="Brian Jackson" />
<person posts="2" size="5" who=" (Nick Holloway)" />
<person posts="2" size="5" who="Osamu Tomita" />
<person posts="2" size="5" who="Kevin Curtis" />
<person posts="2" size="5" who="Rik van Riel" />
<person posts="2" size="5" who="Paul Nasrat" />
<person posts="2" size="5" who="Geller Sandor" />
<person posts="2" size="5" who="Ivan Kokshaysky" />
<person posts="2" size="5" who=" (David Wagner)" />
<person posts="2" size="5" who="Rudmer van Dijk" />
<person posts="2" size="5" who="devnetfs" />
<person posts="2" size="5" who="Stephen Liu" />
<person posts="2" size="5" who="(root)" />
<person posts="2" size="5" who="Andrew Clayton" />
<person posts="2" size="5" who="Bernd Eckenfels" />
<person posts="2" size="5" who="Rik van Riel" />
<person posts="2" size="4" who="&quot;Yang-Hwee TAN&quot;" />
<person posts="2" size="4" who="Mike Dresser" />
<person posts="2" size="4" who="Abhishek Agrawal" />
<person posts="2" size="4" who="Anton Blanchard" />
<person posts="2" size="4" who="Zoltan NAGY" />
<person posts="2" size="4" who="James Simmons" />
<person posts="1" size="89" who="Greg Norris" />
<person posts="1" size="63" who="Vincent Touquet" />
<person posts="1" size="45" who="Christian Vogel" />
<person posts="1" size="44" who="Randolph Chung" />
<person posts="1" size="38" who="Andreas Henriksson" />
<person posts="1" size="37" who="Niels den Otter" />
<person posts="1" size="36" who="&quot;J. Hidding&quot;" />
<person posts="1" size="32" who="Rob Weir" />
<person posts="1" size="31" who="Andrew" />
<person posts="1" size="31" who="Ingo Molnar" />
<person posts="1" size="31" who="Ronald Lembcke" />
<person posts="1" size="30" who="Jan Dittmer" />
<person posts="1" size="28" who="Hugo Mills" />
<person posts="1" size="27" who="&quot;C. Scott Ananian&quot;" />
<person posts="1" size="27" who="Helge Bahmann" />
<person posts="1" size="26" who="Moritz Muehlenhoff" />
<person posts="1" size="26" who="Andrej Kaligaric" />
<person posts="1" size="24" who="Martin Zwickel" />
<person posts="1" size="22" who="Bjorn Helgaas" />
<person posts="1" size="21" who="(rankincj)" />
<person posts="1" size="18" who="Chuck Berg" />
<person posts="1" size="17" who="root" />
<person posts="1" size="14" who="Michael Hunold" />
<person posts="1" size="13" who="Sven Krohlas" />
<person posts="1" size="12" who="=?ISO-8859-1?Q?Tord_=D8ygard?=" />
<person posts="1" size="11" who="Stas Sergeev" />
<person posts="1" size="11" who="&quot;George Chang&quot;" />
<person posts="1" size="11" who="&quot;Tomasz Torcz, BG&quot;" />
<person posts="1" size="10" who="Bernhard Kaindl" />
<person posts="1" size="10" who="David Tymon" />
<person posts="1" size="10" who="Corey Minyard" />
<person posts="1" size="10" who="Nuno Silva" />
<person posts="1" size="9" who="Martin Hicks" />
<person posts="1" size="8" who="Felix =?ISO-8859-1?B?S/xobGluZw==?=" />
<person posts="1" size="8" who="Soeren Sonnenburg" />
<person posts="1" size="8" who="&quot;Yu, Luming&quot;" />
<person posts="1" size="7" who="Frederik Vanrenterghem" />
<person posts="1" size="7" who="Alexander Hoogerhuis" />
<person posts="1" size="7" who="Neil Schemenauer" />
<person posts="1" size="6" who="Jan Kara" />
<person posts="1" size="6" who="Andreas Gruenbacher" />
<person posts="1" size="6" who="Julian Blake Kongslie" />
<person posts="1" size="6" who="Darren Tucker" />
<person posts="1" size="6" who="hv" />
<person posts="1" size="6" who="Stephen Baker" />
<person posts="1" size="6" who="Robert Schweikert" />
<person posts="1" size="6" who="Andy Chou" />
<person posts="1" size="6" who="Peter Badovinatz" />
<person posts="1" size="5" who="Mel Gorman" />
<person posts="1" size="5" who="&quot;Krishnakumar. R&quot;" />
<person posts="1" size="5" who="Martin Josefsson" />
<person posts="1" size="5" who="Bernhard Kaindl" />
<person posts="1" size="5" who="I Am Falling I Am Fading" />
<person posts="1" size="5" who="=?iso-8859-1?Q?Bj=F6rn?= Stenberg" />
<person posts="1" size="5" who="&quot;Shawn Starr&quot;" />
<person posts="1" size="5" who="Kristian Peters" />
<person posts="1" size="5" who="=?ISO-8859-1?Q?Ren=E9?= Scharfe" />
<person posts="1" size="5" who="Krzysztof Halasa" />
<person posts="1" size="5" who="farshad khoshkhui" />
<person posts="1" size="5" who="Renaud =?iso-8859-1?q?Gu=E9rin?=" />
<person posts="1" size="5" who="Steven Pratt" />
<person posts="1" size="4" who="Kimmo Sundqvist" />
<person posts="1" size="4" who="Dax Kelson" />
<person posts="1" size="4" who="Jakob Oestergaard" />
<person posts="1" size="4" who="Arcady Stepanov" />
<person posts="1" size="4" who="Chris Sykes" />
<person posts="1" size="4" who="&quot;Tom Dietz&quot;" />
<person posts="1" size="4" who="Stephen Cameron" />
<person posts="1" size="4" who="Adrian Knoth" />
<person posts="1" size="4" who="Alessandro Suardi" />
<person posts="1" size="4" who="Justin Pryzby" />
<person posts="1" size="4" who="Lincoln Dale" />
<person posts="1" size="4" who="Jos Hulzink" />
<person posts="1" size="4" who="Trammell Hudson" />
<person posts="1" size="4" who="Alex Combas" />
<person posts="1" size="4" who="&quot;Anders Larsson&quot;" />
<person posts="1" size="4" who="&quot;Ruslan U. Zakirov&quot;" />
<person posts="1" size="4" who="Paul B Schroeder" />
<person posts="1" size="4" who="Nathan Straz" />
<person posts="1" size="4" who="David Redman" />
<person posts="1" size="4" who="Florian Hinzmann" />
<person posts="1" size="4" who="&quot;Fleischer, Julie N&quot;" />
<person posts="1" size="4" who="Oliver Sommer" />
<person posts="1" size="4" who="&quot;Mrs Magreth Hatch&quot;" />
<person posts="1" size="4" who="Christian Reis" />
<person posts="1" size="4" who="David Mansfield" />
<person posts="1" size="4" who="&quot;Andres Salomon&quot;" />
<person posts="1" size="4" who="&quot;dan carpenter&quot;" />
<person posts="1" size="4" who="&quot;ryan_sparrow&quot;" />
<person posts="1" size="4" who="badari" />
<person posts="1" size="4" who="Roger Gammans" />
<person posts="1" size="4" who="Ville Herva" />
<person posts="1" size="4" who="Andreas Gietl" />
<person posts="1" size="4" who="Jerome Chantelauze" />
<person posts="1" size="4" who="Ian Kumlien" />
<person posts="1" size="4" who="&quot;Mr. James W. Laferriere&quot;" />
<person posts="1" size="4" who="Seth Chandler" />
<person posts="1" size="4" who="Peter Kjellerstedt" />
<person posts="1" size="4" who="David Lang" />
<person posts="1" size="4" who="Ottavio Campana" />
<person posts="1" size="4" who="&quot;Antonio G. - Geotronix&quot;" />
<person posts="1" size="4" who="&quot;Punj, Arun&quot;" />
<person posts="1" size="3" who="&quot;Virgil&quot;" />
<person posts="1" size="3" who="Ferry van Steen" />
<person posts="1" size="3" who="&quot;Timothy D. Witham&quot;" />
<person posts="1" size="3" who="&quot;Selbak, Rolla N&quot;" />
<person posts="1" size="3" who="Der Herr Hofrat" />
<person posts="1" size="3" who="Jeremy Brown" />
<person posts="1" size="3" who="Takashi Iwai" />
<person posts="1" size="3" who="(Gary_Lerhaupt)" />
<person posts="1" size="3" who="(linux-kernel)" />
<person posts="1" size="3" who="Steven Whitehouse" />
<person posts="1" size="3" who="Rob Radez" />
<person posts="1" size="3" who="Kevin Brosius" />
<person posts="1" size="3" who="Felix Triebel" />
<person posts="1" size="3" who="David Howells" />
<person posts="1" size="3" who="Rafael Santos" />
<person posts="1" size="3" who="(latten)" />
<person posts="1" size="3" who="Bob Gill" />
<person posts="1" size="3" who="Eric Northup" />
<person posts="1" size="3" who="=?ISO-8859-2?Q?Pawe=B3_Go=B3aszewski?=" />
<person posts="1" size="3" who="Hanno =?ISO-8859-15?Q?B=F6ck?=" />
<person posts="1" size="3" who="Bernhard Rosenkraenzer" />
<person posts="1" size="3" who="Athanasius" />
<person posts="1" size="3" who="Mike Anderson" />
<person posts="1" size="3" who="&quot;Heflin, Roger A.&quot;" />
<person posts="1" size="3" who="Yves Colombani" />
<person posts="1" size="3" who="(bunk)" />
<person posts="1" size="3" who="Gerd Knorr" />
<person posts="1" size="3" who="Mark Syms" />
<person posts="1" size="3" who="&quot;sean darcy&quot;" />
<person posts="1" size="3" who="Mark Rutherford" />
<person posts="1" size="3" who="Martin Loschwitz" />
<person posts="1" size="3" who="Zed Pobre" />
<person posts="1" size="3" who="Peter Chubb" />
<person posts="1" size="3" who="Paolo Ornati" />
<person posts="1" size="3" who="&quot;Yang-Hwee TAN&quot;" />
<person posts="1" size="3" who="Ken Moffat" />
<person posts="1" size="3" who="Troy Rollo" />
<person posts="1" size="3" who="Jon Portnoy" />
<person posts="1" size="3" who="Matthew Sell" />
<person posts="1" size="3" who="(linas)" />
<person posts="1" size="3" who="Per Pascal Grube" />
<person posts="1" size="3" who="Lee Causier" />
<person posts="1" size="3" who=" (Julien Oster)" />
<person posts="1" size="3" who="Nico Schottelius" />
<person posts="1" size="3" who="'David Gibson'" />
<person posts="1" size="3" who="Ross Biro" />
<person posts="1" size="3" who="Ed Sweetman" />
<person posts="1" size="3" who="Neil Brown" />
<person posts="1" size="3" who="Nicholas Wourms" />
<person posts="1" size="3" who="Anton Petrusevich" />
<person posts="1" size="3" who="Marcel Holtmann" />
<person posts="1" size="3" who="Mace Moneta" />
<person posts="1" size="3" who="Mauricio Oliveira Carneiro" />
<person posts="1" size="3" who="&quot;Justin T. Gibbs&quot;" />
<person posts="1" size="3" who="(Heiko.Rabe)" />
<person posts="1" size="3" who="Andreas Haumer" />
<person posts="1" size="3" who="Peter Svensson" />
<person posts="1" size="3" who="&quot;Max Linux&quot;" />
<person posts="1" size="3" who="Bryan O'Sullivan" />
<person posts="1" size="3" who="Karl Weigel" />
<person posts="1" size="3" who="Marc Wilson" />
<person posts="1" size="3" who="Richard J Moore" />
<person posts="1" size="3" who="Matthias Brinkmann" />
<person posts="1" size="3" who="&quot;Michael B Allen&quot;" />
<person posts="1" size="3" who="(pixi)" />
<person posts="1" size="3" who="Jack F Vogel" />
<person posts="1" size="3" who="Janet Morgan" />
<person posts="1" size="3" who="Herbert Xu" />
<person posts="1" size="3" who="&quot;Dean McEwan&quot;" />
<person posts="1" size="3" who="Thomas Backlund" />
<person posts="1" size="3" who="Alex Williamson" />
<person posts="1" size="3" who="Dan Maas" />
<person posts="1" size="3" who="&quot;Kristofer T. Karas&quot;" />
<person posts="1" size="3" who="&quot;Riley Williams&quot;" />
<person posts="1" size="3" who="&quot;Chandrasekhar&quot;" />
<person posts="1" size="3" who="Jason Cook" />
<person posts="1" size="3" who="&quot;Hua Zhong&quot;" />
<person posts="1" size="3" who="&quot;Oliver S.&quot;" />
<person posts="1" size="3" who="Felipe Alfaro Solana" />
<person posts="1" size="3" who="Christer Weinigel" />
<person posts="1" size="3" who="(Shesha)" />
<person posts="1" size="3" who="Leif Delgass" />
<person posts="1" size="3" who="Arjan van de Ven" />
<person posts="1" size="3" who="Randolph Bentson" />
<person posts="1" size="3" who="Robert Schweikert" />
<person posts="1" size="3" who="Jan Knutar" />
<person posts="1" size="3" who="Sami Nieminen" />
<person posts="1" size="3" who="&quot;Robert Williamson&quot;" />
<person posts="1" size="3" who="Lawrence Walton" />
<person posts="1" size="3" who=" (Danny ter Haar)" />
<person posts="1" size="3" who="Shachar Shemesh" />
<person posts="1" size="3" who="Hans-Peter Jansen" />
<person posts="1" size="3" who="Mark Hahn" />
<person posts="1" size="3" who="Daniel Gryniewicz" />
<person posts="1" size="3" who="Jeff Chua" />
<person posts="1" size="3" who="Disconnect" />
<person posts="1" size="3" who="Ali Akcaagac" />
<person posts="1" size="3" who="Brian Gerst" />
<person posts="1" size="3" who="Toon van der Pas" />
<person posts="1" size="3" who="Michal Jaegermann" />
<person posts="1" size="3" who="Michael Knigge" />
<person posts="1" size="3" who="Benson Chow" />
<person posts="1" size="3" who="Badari Pulavarty" />
<person posts="1" size="3" who="&quot;Jeremy Jackson&quot;" />
<person posts="1" size="3" who=" (Miklos Szeredi)" />
<person posts="1" size="3" who="Kasper Dupont" />
<person posts="1" size="2" who="Andreas Tscharner" />
<person posts="1" size="2" who="Toni Viemero" />
<person posts="1" size="2" who="Charles Cazabon" />
<person posts="1" size="2" who="Jakub Bogusz" />
<person posts="1" size="2" who="Nicholas Wourms" />
<person posts="1" size="2" who="Aravind/=?UTF-7?Q?+CQUJMAk1CT8JKAlNCSY-?=" />
<person posts="1" size="2" who="Andrew Walrond" />
<person posts="1" size="2" who="James Bourne" />
<person posts="1" size="2" who="Lars Marowsky-Bree" />
<person posts="1" size="2" who="Andreas Jaeger" />
<person posts="1" size="2" who="Frank v Waveren" />
<person posts="1" size="2" who="(b_adlakha)" />
<person posts="1" size="2" who="(venom)" />
<person posts="1" size="2" who="Michael B Allen" />
<person posts="1" size="2" who="Christopher Curtis" />
<person posts="1" size="2" who="Andreas Schwab" />
<person posts="1" size="2" who="Martin Aumueller" />
<person posts="1" size="2" who="(erich)" />
<person posts="1" size="2" who="Petr Cisar" />
<person posts="1" size="2" who="&quot;Theewara Vorakosit&quot;" />
<person posts="1" size="2" who="Steven French" />
<person posts="1" size="2" who="Bartlomiej Czardybon" />
<person posts="1" size="2" who="Bartlomiej Czardybon" />
<person posts="1" size="2" who=" (Joel L. Breazeale)" />
<person posts="1" size="2" who="Peter Chubb" />
<person posts="1" size="2" who="William WAISSE" />
<person posts="1" size="2" who="Bart Trojanowski" />
<person posts="1" size="2" who="Seth Britten Chandler" />
<person posts="1" size="2" who="(soyoung)" />
<person posts="1" size="2" who="Andreas Hartmann" />
<person posts="1" size="2" who="&quot;Silk Thadeum&quot;" />
<person posts="1" size="2" who="Joshua Penix" />
<person posts="1" size="2" who="&quot;Pestouille&quot;" />
<person posts="1" size="2" who="David Madore" />
<person posts="1" size="2" who="Douglas Gilbert" />
<person posts="1" size="2" who="(gigerstyle)" />
<person posts="1" size="2" who="&quot;Matthew A. Miling&quot;" />
<person posts="1" size="2" who="Adam Majer" />
<person posts="1" size="2" who="Hans Reiser" />
<person posts="1" size="2" who="Robert Schwebel" />
<person posts="1" size="2" who="&quot;Jack F. Vogel&quot;" />
<person posts="1" size="2" who="Alexandru Damian" />
<person posts="1" size="2" who="Marci" />
<person posts="1" size="2" who="&quot;ankit nagarsheth&quot;" />
<person posts="1" size="2" who="&quot;Paul Rolland&quot;" />
<person posts="1" size="2" who="&quot;B. Joshua Rosen&quot;" />
<person posts="1" size="2" who="Adrian McMenamin" />
<person posts="1" size="2" who="Hui Huang" />
<person posts="1" size="2" who="Wes Felter" />
<person posts="1" size="2" who="John Levon" />
<person posts="1" size="2" who="David Woodhouse" />
<person posts="1" size="2" who="Rogier Wolff" />
<person posts="1" size="2" who="Tigran Aivazian" />
<person posts="1" size="2" who="Mario Mikocevic" />
<person posts="1" size="2" who="Matt Bernstein" />
<person posts="1" size="2" who="g-org" />
<person posts="1" size="2" who="Kelledin" />
<person posts="1" size="2" who="=?ISO-8859-1?Q?I=F1igo_Ill=E1n?=" />
<person posts="1" size="2" who="Chris Heath" />
<person posts="1" size="2" who="(Martin_List-Petersen)" />
<person posts="1" size="2" who="=?ISO-8859-1?Q?Fr=E9d=E9ric_L=2E_W=2E_Meunier?=" />
<person posts="1" size="2" who="Rene Herman" />
<person posts="1" size="2" who="Paul Bristow" />
<person posts="1" size="2" who="John Klingler" />
<person posts="1" size="2" who="&quot;Pedro A. Gracia Fajardo&quot;" />
<person posts="1" size="2" who="Tony Spinillo" />
<person posts="1" size="2" who="Ben Greear" />
<person posts="1" size="2" who="Wichert Akkerman" />
<person posts="1" size="2" who="Florian Weimer" />
<person posts="1" size="2" who="Julian Anastasov" />
<person posts="1" size="2" who="David Brodbeck" />
<person posts="1" size="2" who="Dominik Kubla" />
<person posts="1" size="2" who="Wil Reichert" />
<person posts="1" size="2" who="Patrick McHardy" />
<person posts="1" size="2" who="&quot;Kasim Sinan Yildirim&quot;" />
<person posts="1" size="2" who="(uaca)" />
<person posts="1" size="2" who="Josh McKinney" />
<person posts="1" size="2" who="Roger Luethi" />
<person posts="1" size="2" who="Joshua Kwan" />
<person posts="1" size="2" who="Justin Piszcz" />
<person posts="1" size="2" who="Roland Dreier" />
<person posts="1" size="2" who="Carlos de la Cruz" />
<person posts="1" size="2" who="Shane Shrybman" />
<person posts="1" size="2" who="Jari Ruusu" />
<person posts="1" size="2" who="wwp" />
<person posts="1" size="2" who="&quot;Shaheed R. Haque&quot;" />
<person posts="1" size="2" who="&quot;John Hall&quot;" />
<person posts="1" size="2" who="Steven Rostedt" />
<person posts="1" size="2" who="&quot;Isabelle, Francois&quot;" />
<person posts="1" size="2" who="Rafal Bujnowski" />
<person posts="1" size="2" who="TELEPHONE WINDUP" />
<person posts="1" size="2" who="Hanasaki JiJi" />
<person posts="1" size="2" who="Thomas Gleixner" />
<person posts="1" size="2" who="Walt H" />
<person posts="1" size="2" who="Tom Sightler" />
<person posts="1" size="2" who="Amol Lad" />
<person posts="1" size="2" who="Jason Giglio" />
<person posts="1" size="2" who="Dave Kleikamp" />
<person posts="1" size="2" who="Sam Ravnborg" />
<person posts="1" size="2" who="bert hubert" />
<person posts="1" size="2" who="Chris Smith" />
<person posts="1" size="2" who="Ludovic Drolez" />
<person posts="1" size="2" who="Fred Aberdeen" />
<person posts="1" size="2" who="Michiel Borkent" />
<person posts="1" size="2" who="Giuliano Pochini" />
<person posts="1" size="2" who="&quot;Dave Gilbert (Home)&quot;" />
<person posts="1" size="2" who="(bobcook)" />
<person posts="1" size="2" who="Julien Oster" />
<person posts="1" size="2" who="Michael" />
<person posts="1" size="2" who="(info)" />
<person posts="1" size="2" who="Javier Achirica" />
<person posts="1" size="2" who="&quot;Bloch, Jack&quot;" />
<person posts="1" size="2" who="Steve Bangert" />
<person posts="1" size="2" who="Felix von Leitner" />
<person posts="1" size="2" who="Chris Wedgwood" />
<person posts="1" size="2" who="Julien Oster" />
<person posts="1" size="2" who="&quot;Barry K. Nathan&quot;" />
<person posts="1" size="2" who="Stefan Brozinski" />
<person posts="1" size="2" who="Andrey Nekrasov" />
<person posts="1" size="2" who="&quot;DigorA&quot;" />
<person posts="1" size="2" who="Jeff Smith" />
<person posts="1" size="2" who="Adrian Etchevarne" />
<person posts="1" size="2" who="Dan Kegel" />
<person posts="1" size="2" who="Shantanu Goel" />
<person posts="1" size="2" who="Michael Frank" />
<person posts="1" size="2" who="Henti Smith" />
<person posts="1" size="2" who="Louis Garcia" />
<person posts="1" size="2" who="Alexey Mahotkin" />
<person posts="1" size="2" who=" &lt;vlad@geekizoid.com&gt;" />
<person posts="1" size="2" who="&quot;ALYAKOUBI CORP.&quot;" />
<person posts="1" size="2" who="Michael Madore" />
<person posts="1" size="2" who=" (Margit Schubert-While)" />
<person posts="1" size="2" who="Aaron Lehmann" />
<person posts="1" size="2" who="John Meyers" />
<person posts="1" size="2" who="Dino Golinucci" />
<person posts="1" size="2" who="Thomas Hood" />
<person posts="1" size="1" who="Brad Chapman" />
<person posts="1" size="1" who="(aglait)" />
<person posts="1" size="1" who="Daniel Sheltraw" />
<person posts="1" size="1" who="(bullfights88466)" />
<person posts="1" size="1" who="(evrJulie)" />
<person posts="1" size="1" who=" &lt;nbxwashvyx@hotmail.com&gt;" />

</stats>

<section
  title="Implementing Fine-Grained Control Over printk() Output"
  subject="[patch] printk subsystems"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.0/1642.html"
  posts="52"
  startdate="07 Apr 2003 12:13:37 -0800"
  enddate="24 Apr 2003 11:10:09 -0800"
>
<topic>Disks: SCSI</topic>
<topic>FS: sysfs</topic>
<topic>USB</topic>

<mention>Randy Dunlap</mention>
<mention>Pavel Machek</mention>
<mention>H. Peter Anvin</mention>

<p>Martin Hicks introduced a patch to group printk() calls into categories
that could be configured into the kernel, or left out. Each printk() call
would identify its category (SCSI, USB, etc), so the user could decide
at run-time, via a sysctl interface, if those particular types of messages
would be welcome. He figured this was better than the old way, in which every
feature just used printk() calls, and the user had to deal with everything,
including the possibility that the more verbose drivers and subsystems might
overflow the buffer used by printk().</p>

<p>Pavel Machek said the proper solution was just to fix the printk()s
that overflowed the buffer; but Jes Sorensen replied, <quote who="Jes
Sorensen">Killing the printk's means they are not around if you have an end
user who is running into problems at boot time. Having a feature like this
means they can default to 'off' then if a problem arises, whoever is doing
the support can ask the user to try and enable printk's for say SCSI and
get the input, without haven to rebuild the kernel from scratch.</quote> Pavel
insisted there were two problems: the problem of overflowing the buffer, and the
problem of restricting unwanted printk()s. He said no printk() call should
overflow the buffer, and all those that did should be fixed. But Jes and H.
Peter Anvin didn't agree; and said that all the printk()s should be kept, since
they might contain valuable information.</p>

<p>Pavel said the proper way to control whether a given driver produced output
was to use "#define DEBUG" in the driver code itself, and surround all debugging
messages with "#ifdef" commands. He said Martin's system did not well-define the
groupings of printk() calls into "subsystems". Jes pointed out that this would
require the user to recompile the kernel each time, which Martin's solution did
not. And H. Peter said that the printk() groupings would tend to define
themselves along sensible lines.</p>

<p>Randy Dunlap also said he was working on a very similar feature, that would
add a sysfs-controlled debugging flag that could be set or unset on a per-module
basis. Patrick Mochel also said:</p>

<quote who="Patrick Mochel">

<p>Something I've pondered in the past is a per-subsystem (as in struct
subsystem) debug field and log buffer. When the subsystem is registered,
a sysfs 'debug' file is created, from which the user can set the noisiness
level.</p>

<p>From there, each subsystem can specify the size of a log buffer, which
would be allocated also when the subsystem is registered. Messages from
the subsystem, and kobjects belonging to it, would be copied into the local
log buffer.</p>

<p>Wrapper functions can be created, similar to the dev_* functions, which
take a kobject as the first parameter. From this, the subsystem and log
buffer, can be derived (or rather, passed to a lower-level helper).</p>

<p>This all falls under the 'gee-whiz-this-might-be-neat' category, and may
inherently suck; I haven't tried it. Doing the core code is &lt; 1 day's work,
though there would be nothing that actually used it..</p>

</quote>

<p>Martin replied, <quote who="Martin Hicks">I'm not sure that this addresses
the core problem that I'm trying to deal with.  The problem is that machines
with certain configurations (large number of CPUs, Nodes, or a bunch of SCSI
and disks) display far too many messages to the console, resulting in the
log buffer being overflowed.  The method that I'm proposing simply allows
you to decide what gets logged when a printk() happens, depending on the
message's priority and which subsystem it originated from.</quote> Karim
Yaghmour pointed out:</p>

<quote who="Karim Yaghmour">

<p>I'm not going to address the "filtering" aspect of the problem,
but I would like to point out that this issue of printk overflowing
and having multiple streams of printk is already solved by relayfs: <a
href="http://www.opersys.com/relayfs/">http://www.opersys.com/relayfs/</a></p>

<p>With relayfs, one could easily have multi-channel printks (e.g. one for
each "subsystem" and a main one for important messages of all subsystems.) The
advantages of relayfs are obvious:</p>

<p>

<ul>

<li>No more lost printks.</li>
<li>A unified buffering scheme for all subsystems that need to send   
data to user-space.</li>
<li>Lockless per-cpu buffering.</li>
<li>etc.</li>

</ul>

</p>

<p>We've already started playing around with printk on relayfs, though 
we don't have code to offer at this time.</p>

<p>In terms of init-time printk'ing with relayfs, this is the scheme
I suggest:</p>

<p>

<ul>

<li>Change all statically allocated printk buffers to __initdata.</li>
<li>Add a registration function in kernel/printk.c which is called
during initialization.</li>
<li>Said function:</li>
<ol>
<li>Allocates relayfs channel(s)</li>
<li>Atomically copies existing init-time data to channel</li>
<li>Starts using relayfs channel for all future transfers</li>
</ol>

</ul>

</p>

<p>That's it. Thereafter, all statically allocated printk buffers are dropped
and all buffer management is left to relayfs.</p>

<p>[The filtering aspect is not taken care of by relayfs because it is
not part of its "mandate". relayfs only aims at providing a very reliable
lightweight high-speed data transfer mechanism for providing kernel data to
user space. Higher-level mechanisms can easily use different relayfs channels
to filter/mux data.]</p>

</quote>

<p>Elsewhere, Martin said, <quote who="Martin Hicks">I don't think relayfs
solves the problem either.  This just adds an extra dependency for yet another
pseudo-filesystem.  printk is something that needs to "just work" even if the
kernel is in the midst of crashing.  Adding the extra complexity of all printk
going out through a filesystem/buffer layer is not desirable, IMHO.</quote>
But Karim replied, <quote who="Karim Yaghmour">There's a point where we've got
to stop saying "oh, this buffering mechanism is special and it requires its
own code."  relayfs is there to provide a unified light-weight mechanism for
transfering large amounts of data from the kernel to user space.</quote></p>

<p>The various advocates continued advocating for a bit, and the discussion
petered out inconclusively.</p>

</section>

<section
  title="SELinux API Changes"
  subject="[RFC][PATCH] Extended Attributes for Security Modules"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.1/0163.html"
  posts="14"
  startdate="08 Apr 2003 12:26:15 -0800"
  enddate="17 Apr 2003 17:07:45 -0800"
>
<topic>Capabilities</topic>
<topic>Extended Attributes</topic>
<topic>FS: ext3</topic>
<topic>POSIX</topic>

<p>Stephen Smalley said:</p>

<quote who="Stephen Smalley">

<p>As part of preparing SELinux for submission to mainline 2.5, the SELinux
API is being reworked based on earlier discussions (starting when sys_security
was removed from 2.5).  As a preliminary step toward submitting SELinux,
I'd like to request comments on an extended attribute handler for security
modules.  This message includes a patch against 2.5.67 (also available from <a
href="http://www.nsa.gov/selinux/lk/A02xattr.patch.gz">http://www.nsa.gov/selinux/lk/A02xattr.patch.gz</a>)
that implements the changes to the base kernel and the LSM
framework to support the use of extended attributes by security
modules.  You can obtain a full SELinux patch against 2.5.67 that
includes these changes along with the SELinux code that uses them from <a
href="http://www.nsa.gov/selinux/lk/2.5.67-selinux1.patch.gz">http://www.nsa.gov/selinux/lk/2.5.67-selinux1.patch.gz</a>,
and some relevant userland components from <a
href="http://www.nsa.gov/selinux/lk/selinux-2.5.tgz">http://www.nsa.gov/selinux/lk/selinux-2.5.tgz</a>.
Note that the full SELinux patch also contains some other changes to the
base kernel and the LSM framework that will be submitted as separate RFCs.</p>

<p>The patch below implements an extended attribute handler for ext3 (as
an initial example, not as an intended limitation) for a system.security
attribute that can be used by a security module and by security-aware
applications to get and set file security labels.  The patch also adjusts
the LSM hook in setxattr and adds a post_setxattr hook so that the security
module can update the inode security field upon a successful change to the
file security label and can ensure atomicity for the security check and the
update to the inode security field.</p>

<p>I should note that we will ultimately need such xattr handlers not only
for conventional filesystems such as ext3 but also for pseudo filesystems
such as devpts, e.g. so that sshd can set the security label properly on
the pty that will be used for a user session.  The SELinux release includes
a patched sshd program that does this using the old SELinux API for setting
file security labels, but this will need to be migrated to using setxattr if
we are going to use the xattr API for all of our file labeling operations.</p>

</quote>

<p>Andreas Gruenbacher replied privately:</p>

<quote who="Andreas Gruenbacher">

<p>Could you please try to priefly summarize the intended use of these security
labels? Is this for MAC? Also it would be interesting to know what the required
privileges would be to access the labels. There are probably some accesses that
are allowed in the user's security context, and some others that are performed
on behalf of a user process, but within the kernel's security context.</p>

<p>There may be some overlap with trusted extended attributes (see <a
href="http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/attr/man/man5/attr.5">http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/attr/man/man5/attr.5</a>
for a manual page that contains a minimal description).</p>

</quote>

<p>Stephen quoted Andreas' email, and replied:</p>

<quote who="Stephen Smalley">

<p>SELinux implements a flexible MAC architecture that can support many
different kinds of MAC security models and includes Type Enforcement,
Role-Based Access Control, and optionally Multi-Level Security in the
example security server (policy engine).  It is not based on POSIX.1e MAC,
and POSIX.1e MAC doesn't work so well for non-traditional MAC models like Type
Enforcement and Role-Based Access Control.  We define a set of permissions
that control the ability of a user process to get and set the security label
of a file, and the kernel module internally performs get and set operations
as appropriate when files are looked up and when new files are created.
We originally implemented our own persistent label mapping using some
meta-files, but have reworked the SELinux implementation to use xattr if
they are available, as you can see in the patch on the NSA site.</p>

<p>However, SELinux is merely one of the possible security modules that might
be implemented via LSM, so we didn't want to limit this to just SELinux.
It seems preferable to reserve a single index and attribute name that can be
used by any security module, and use the first few bytes of the attribute
value to indicate the particular security module.  Most security modules
seems to be implementing some form of non-discretionary access control,
but the LSM framework isn't specifically limited to that.</p>

<p>The xattr_security.c code is actually derived from xattr_trusted.c, but I
thought that we should have a separate index and name for an attribute that
will be used by MAC schemes like SELinux.  Also, the xattr_security.c code
differs from xattr_trusted.c in the following important respects:</p>

<p>

<ol>

<li>We use a fixed attribute name (system.security) that is not extensible.
Every security module would use that name for its attributes (LSM only allows
one security module at a time, and any stacking has to be handled by the
"principal" security module), and would sanity check the value by checking
the first few bytes against some module identifier.  Using the "system"
prefix seemed appropriate given that this attribute is used internally by
the security module and not just by userspace.</li>

<li>Permission checking is handled via the security_inode_setxattr hook in
fs/xattr.c:setxattr, and updating of the inode's security field to reflect
changes to the attribute is handled by a new security_inode_post_setxattr hook
added by the patch.  The inode semaphore ensures atomicity for the check and
update (note that the down is moved by the patch).  There is no permission
check embedded in the handler itself, since it will vary depending on the
security module and depending on whether the call is made from userspace or
from the security module itself.</li>

</ol>

</p>

</quote>

<p>Andreas replied:</p>

<quote who="Andreas Gruenbacher">

<p>LSM only allows one principal security module at a time, but it allows
to switch between security modules. I am wondering what will happen if a
user switches between multiple security modules that label files. The new
module will see labels from the old module. It's a question of policy how
to deal with that case. Probably the policy restrictions the old module was
implementing should be considered invalid after another module was used,
and so the old labels should be ignored/removed.</p>

<p>Another case is stacked modules where more than one module needs file
labels. Your proposed API does not support that. I would rather use individual
attribute names for each module (e.g., "security.selinux", etc.).</p>

<p>The design of filesystem EAs differentiates rough access policies
by attribute namespace ("system.*", "user.*", "trusted.*"). The system
namespace is special in that each "system.*" attribute may have different
access restrictions. Attributes in the "user.*" namespace are subject to the
same restrictions as the contents of the file the attributes are attached
to. Attributes in the "trusted.*" namespace are accessible only to users
capable of CAP_SYS_ADMIN.</p>

<p>The "security" namespace/attribute you are proposing is quite similar to the
"trusted.*" namespace, except that CAP_SYS_ADMIN does not grant any rights
there. It is unlikely that security modules will/can remove the powers of
the CAP_SYS_ADMIN capability; many areas in the kernel depend on it. I would
expect that these modules make sure that no process will be able to attain
that capability in the first place. In that light, wouldn't it be possible
to use the "trusted.*" namespace for storing LSM file labels instead (e.g.,
"trusted.selinux")? There's nothing wrong with introducing another namespace
if necessary, but we might be able to avoid that.</p>

</quote>

<p>Stephen didn't think there was much of a problem regarding switching
between security modules. He felt it was much more likely that security modules
would be loaded once, early in initialization, and never removed. Switching
between multiple security modules seemed even less likely to him. To the
problem of module stacking, he replied, <quote who="Stephen Smalley">Note
that LSM intentionally does not provide any mechanism itself for sharing the
security fields of the kernel data structures.  Stacking has to be handled
by the principal security module.  In practice, I would expect that any
"stacking" of multiple security modules that use security fields and xattr
will actually involve creation of a new module that integrates the logic
of the individual modules.  This is preferable anyway to ensure that the
interactions among the security modules are well understood, that the logic
is combined in a sensible manner, and that the individual logics can not
subvert one another.  Given this view, using an individual attribute name
for each module would seem to serve no purpose.  An integrated module that
combines logic of several modules can store all of the necessary security
data as a single attribute value.  Note that SELinux already does this for
the set of security models implemented by its policy engine.</quote> Richard
Offer said that regardless of which modules were loaded, an attribute was a
permanent quality. If he rebooted his system and loaded a different LSM, he
wanted the attributes set during the first run, to be preserved. But Stephen
felt this was not a realistic scenario. Even rebooting in order to go into a
different security "environment", he said, was a fundamentally flawed idea. The
problem was always that, in order to actually provide security, a security
module had to be able to exert strong control over the system. There would
never arise a case in which security modules would be swapped in and out,
or a system would be rebooted with a different idea of security. To truly
be secure, Stephen said, required a single security module loaded early,
with no other shenanigans.</p>

</section>

<section
  title="Multilingual Kernel Messages; Linus On Documentation"
  subject="kernel support for non-english user messages"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.1/0286.html"
  posts="140"
  startdate="08 Apr 2003 21:02:16 -0800"
  enddate="25 Apr 2003 22:57:00 -0800"
>

<mention>Frank Davis</mention>

<p>Frank Davis suggested that printk() messages should be output in the default
language of the machine running that kernel, instead of just in english as
they were currently. Oliver Neukum replied, <quote who="Oliver Neukum">These
messages are for administrators and developers. Everybody needs to be able
to read them. They have to be in English.</quote> But Alan Cox replied:</p>

<quote who="Alan Cox">

<p>Everyone cannot read English. Many non English speakers will be admins
of their own desktop boxes.</p>

<p>For the general case I agree. It would be nice to have message catalogues
and translation capability within klogd and maybe of a few key messages to
console but for most cases it would make things more complex not simpler.</p>

</quote>

<p>Andreas Dilger also said to Frank, <quote who="Andreas Dilger">I don't think
you will get support from anyone for non-english messages in the kernel.
Some people think there is already too much text segment in the kernel
(c.f. tests that show kernel size shrinks by 200kB or whatever when printk
is defined to a no-op).</quote></p>

<p>A number of folks started discussing whether such a thing should be done, and
if so, how, until Linus Torvalds said:</p>

<quote who="Linus Torvalds">

<p>This has come up before.</p>

<p>The answer is: go ahead and do it, but don't do it in the kernel. Do it
in klogd or similar.</p>

<p>I refuse to clutter the kernel with inane and fragile (and totally
unmaintainable) internationalization code. The string lookup can equally
well be done in user space where it isn't a stability and complexity issue.</p>

</quote>

<p>Elsewhere, in a part of the thread discussing the importance of coders
documenting their code, Linus gave his ideas on that as well:</p>

<quote who="Linus Torvalds">

<p>Some people care about documentation, some people don't. That's a fact, and
spouting platitudes about "improving their work" just doesn't _matter_. The
whole open source idea is that people do what they care about and what they
are good at, and exactly because they aren't forced to deal with issues they
don't have a heart for they take  more pride and interest in the stuff they
_do_ do.</p>

<p>Personally, I don't write documentation. I don't much even write comments
in my code. My personal feeling is that as long as functions are small and
readable (and logical), and global variables have good names, that's all I need
to do. Others - who do care about comments and docs - can do that part.</p>

<p>And you know what? That _lack_ of comments and documantation improves
my work. Not because documentation is bad, but because I DO NOT CARE. So I
concentrate on the stuff I do care about.</p>

</quote>

</section>

<section
  title="Static Device Numbering Enhancements"
  subject="[PATCH] kdevt-diff"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.1/1314.html"
  posts="24"
  startdate="13 Apr 2003 14:45:36 -0800"
  enddate="23 Apr 2003 07:19:20 -0800"
>
<topic>Backward Compatibility</topic>

<p>Continuing his effort to extend static device number handling, Andries
Brouwer posted a new patch and said:</p>

<quote who="Andries Brouwer">

<p>This is the part that changes MAJOR/MINOR/MKDEV, that is, the structure
of dev_t.</p>

<p>The structure here is 8+8, except when more bits are present, in which case
it is 16+16, except when more bits are present, in which case it is 32+32.
Since dev_t is 64-bit the structure of the middle part is not very important,
but in some contexts we naturally get 16+16 (e.g. from CDROM) and 16+16
avoids messy conversion.</p>

<p>The macros here are written with the casts and typechecking that is
otherwise implicit in the use of inline functions.  Because of name clashes
they cannot be inline functions.  The MKDEV as given is not accepted by gcc
in an enum, that is why I changed root_dev.h.</p>

<p>Since MINORBITS disappears I gave md_k.h and dasd_int.h local
definitions.</p>

</quote>

<p>Joel Becker thought Andries' scheme was too complicated, with 8+8 unless
16+16, unless 32+32. He said, <quote who="Joel Becker">We'd all have to know
about the mess when dealing with userspace.</quote> Linus Torvalds replied:</p>

<quote who="Linus Torvalds">

<p>Well, the thing is, we absolutely _do_ need to have the 8+8 split, in
order to make old devices look the same old way for old binaries.</p>

<p>And the 32+32 split is what the new maximum would be, so ..</p>

<p>The 16+16 split is not strictly necessary, but Andries pointed out to me
that there are filesystems etc external storage that only support a 32-bit
opaque dev_t, so we'd need to marshall the device number _some_ way for them
anyway, and having a standard way to do that is better than having everybody
come up with their own variations.</p>

<p>(My prefernce for the 32-bit version would be 12+20 bits, but it's not
a very strong one, and it doesn't really matter for the kernel proper, so
I think Andries who has been tirelessly working on this for five years or
more gets the final say on it).</p>

</quote>

<p>Elsewhere, Roman Zippel replied to Andries' post, ccing Linus. He said,
<quote who="Roman Zippel">Linus, if you still want to go for a single block
device major, this patch is bad idea (at least in this form).  The patch below
demonstrates how we can use the space above 0x10000 as one big major. Drivers
only have to set disk-&gt;major to 0 and it gets a device number.  Simply
expanding the dev_t number does not solve the problems, e.g.  changing the
number of partitions is still a problem. Below I added a GENHD_FL_DYNAMIC
flag so the upper layer knows, that some values are only a hint and that it
can change them (e.g. when the user requests it).</quote> But Linus didn't
think Andries' patch interfered with having a single block device major. He
said, <quote who="Linus Torvalds">I think the single block-device major is
a totally separate issue, and has nothing to do with allowing big device_t
representations. I do not see why Andries patch would be anything else than
infrastructure for future expansion.</quote> He and Roman went back and
forth on this, with Roman's point being that any extension to the device
numbering system would have to be supported long after static device numbers
were no longer necessary. He saw no reason to inflict such requirements of
backward compatibility when dynamic device numbers were so close. But Linus
was not convinced.</p>

</section>

<section
  title="Passing System Call Parameters"
  subject="System Call parameters"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.2/0156.html"
  posts="6"
  startdate="16 Apr 2003 08:58:15 -0800"
  enddate="16 Apr 2003 16:39:36 -0800"
>

<p>Richard B. Johnson asked:</p>

<quote who="Richard B. Johnson">

<p>How does the kernel get more than five parameters?   </p>

<p>Currently...</p>

<pre>        eax     = function code
        ebx     = first parameter
        ecx     = second parameter
        edx     = third parameter
        esi     = fourth parameter
        edi     = fifth parameter</pre>

<p>Some functions like mmap() take 6 parameters!  Does anybody know how these
parameters get passed?  I have an "ultra-light" 'C' runtime library I have
been working on and, so-far, I've got everything up to mmap()  (in syscall.h)
(89 functions) working.  I thought, maybe ebp was being used, but it doesn't
seem to be the case.</p>

<p>Maybe after 5 functions, there is a parameter list passed by pointer???? I
don't have a clue and I can figure out the code, it's really obscure...</p>

</quote>

<p>Bruce Harada gave a link to some <a
href="http://webster.cs.ucr.edu/Page_Linux/LinuxSysCalls.pdf">documentation in
PDF</a> and quoted, <quote who="Bruce Harada">Certain Linux 2.4 calls pass a
sixth parameter in EBP. Calls compatible with earlier versions of the kernel
pass six or more parameters in a parameter block and pass the address of the
parameter block in EBX (this change was probably made in kernel 2.4 because
someone noticed that an extra copy between kernel and user space was slowing
down those functions with exactly six parameters; who knows the real reason,
though).</quote> Richard said this was exactly what he wanted, and added,
<quote who="Richard B. Johnson">FYI, I experimentaly I found out that the
6th parameter is passed in EBP if I use __NR_mmap2 as the function call
instead of __NR_mmap. Thanks -- and I now have that working...</quote></p>

<p>H. Peter Anvin confirmed that EBP held the sixth parameter; and added,
<quote who="H. Peter Anvin">However, on i386, SYS_mmap is a four-parameter
system call where the last parameter is a pointer to a parameter block.
SYS_mmap2 is the full six-parameter sane version.</quote> </p>

</section>

<section
  title="Megaraid Driver Update"
  subject="[ANNOUNCE]: version 2.00.3 megaraid driver for 2.4.x and 2.5.67 kernels"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.2/0224.html"
  posts="10"
  startdate="16 Apr 2003 12:34:22 -0800"
  enddate="26 Apr 2003 11:42:50 -0800"
>

<mention>Christoph Hellwig</mention>
<mention>Mukker</mention>

<p>Atul Mukker said, <quote who="Atul
Mukker">New megaraid driver 2.00.3 is now available at <a
href="ftp://ftp.lsil.com/pub/linux-megaraid">ftp://ftp.lsil.com/pub/linux-megaraid</a>
For this driver, a patch is also available for 2.5.67 kernel.</quote>
Christoph Hellwig pointed out that, as 2.00.4beta was already out, it seemed
pointless to announce 2.00.3; and he also had some technical comments
about the driver.  Later, Atul also said, <quote who="Atul Mukker">The
patch for kernel 2.5.6[78] for driver 2.00.5 is now available at <a
href="ftp://ftp.lsil.com/pub/linux-megaraid/drivers/version-2.00.5/">ftp://ftp.lsil.com/pub/linux-megaraid/drivers/version-2.00.5/</a></quote></p>

</section>

<section
  title="kernel.bkbits.net Outage"
  subject="kernel.bkbits.net outage"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.2/0253.html"
  posts="31"
  startdate="16 Apr 2003 14:50:24 -0800"
  enddate="24 Apr 2003 01:19:36 -0800"
>
<topic>Version Control</topic>

<mention>Alan Cox</mention>
<mention>H. Peter Anvin</mention>

<p>Larry McVoy reported:</p>

<quote who="Larry McVoy">

<p>Some of you use kernel.bkbits.net (*) and have noticed that it is off
the air.  It's looking like it may have a blown power supply and Penguin
is on it; ETA for a fix is tomorrow some time (it's colocated and they are
going down there to grab the box and swap out parts).</p>

<p>(*) This is a fast machine which was provided by Penguin Computing and
BitMover as a place for people who do not have access to a high end machine
and could use one.  It's used for various BitKeeper tasks (translation: it
can run a bk -r check -ac in about 15 seconds on the 2.5 tree). It is also
the host for the BK->CVS repositories, so those are off the air as well (we
have a mirror here so if you are dieing for your bits in CVS let me know).</p>

<p>If you use BK and you need a login on fast x86 box, contact me or
davem@redhat.com and we'll set you up an account when it comes back up.
If you appreciate this box, buying some hardware from Penguin Computing
(or getting someone else to do so) is a good way to show that appreciation.
Penguin deserves a lot of thanks, it's a nice box and they provide the power,
bandwidth, and support which are all hidden costs and thankless tasks.</p>

</quote>

<p>Elsewhere, under the Subject: <a href="">BK-&gt;CVS, kernel.bkbits.net</a>,
Larry said:</p>

<quote who="Larry McVoy">

<p>It's back up, and the CVS server up to date with the 2.4 2.5 kernels as
of a few minutes ago.  The CVS server is at</p>

<p>:pserver:anonymous@kernel.bkbits.net:/home/cvs</p>

<p>There are linux-2.4/ and linux-2.5/ subdirectories there (should this go
in a FAQ someplace or does nobody except Andrea care?).</p>

</quote>

<p>H. Peter Anvin said this should definitely be in a FAQ; and Larry replied:</p>

<quote who="Larry McVoy">

<p>OK, so how about this?  I assume you manage DNS for kernel.org, right?
How about a DNS entry for cvs.kernel.org -> 64.241.2.13?  If you ever find
a machine to host this then you already own cvs.kernel.org and you can just
reset the address.  By the way, I think the bandwidth is pretty darn low,
after all that fuss almost nobody seems to use this, it just gives them warm
fuzzies to know that the history has been captured in an open format which
is worth it if it means no more BK flame wars, eh?</p>

<p>Then whoever maintains the kernel FAQ these days could add something
like this:</p>

<p>SCM access to the kernel trees:<br />
-------------------------------</p>

<p>Linus started using an SCM (source code management) tool called BitKeeper in
February of 2002.  Since BitKeeper isn't free software, he does not require
that anyone else use BitKeeper, he continues to accept patches just like
he always did.  The only difference is that information about who did what,
and maybe why they did it, is recorded and is useful for learning the source
base, tracking down bugs, etc.  Many, but not all, of the core developers
have switched to using BitKeeper because it makes their life easier in
various ways.</p>

<p>Some people haven't switched because BitKeeper isn't free software and
they feel uncomfortable using non-free software as part of working on the
kernel.  That's fine, it's an explicit goal of both Linus and the BitKeeper
developers that nobody is required to use BitKeeper to work on the kernel.
Some senior developers have decided they'd rather not use BitKeeper, Alan
Cox being a good example.  That's not a problem, the BitKeeper developers
worked with Linus to streamline the importing of traditional patches so that
anyone can work in any way they see fit.</p>

<p>If you want to use BitKeeper (<a
href="http://www.bitkeeper.com">http://www.bitkeeper.com</a>) then the
official trees are maintained on linux.bkbits.net - to get a particular
release try this:</p>

<p>        bk clone bk://linux.bkbits.net/linux-2.4</p>

<p>There was a fair amount of fuss amongst the free software purists, over
the fact that a lot of information that was available in BitKeeper was lost
when Linus provided the traditional tarball releases and patch updates.
Flame wars happened and when the dust settled, the BitKeeper folks built a
BitKeeper to CVS gateway which captures the bulk of the information (as of
this writing on April 19th 2003 there are 9,311 snapshots captured).  If you
would prefer to get your source with 100% God fearing, politically correct,
open source, fully buzzword enabled software, then you can do this:</p>

<p>        cvs -d:pserver:anonymous@cvs.kernel.org:/home/cvs co linux-2.4</p>

<p>As releases progress, the release numbers will change so some day you
might say</p>

<p>        bk clone bk://linux.bkbits.net/linux-4.2<br />
or<br />
        cvs -d:pserver:anonymous@cvs.kernel.org:/home/cvs co linux-4.2</p>

</quote>

<p>Roman Zippel drew attention to Larry's statement, "Some people haven't
switched because BitKeeper isn't free software and they feel uncomfortable
using non-free software as part of working on the kernel." Roman pointed out,
<quote who="Roman Zippel">You forgot to mention that some people are not
allowed to use bk (without paying)</quote>. Larry accused Roman of trying
to start a flame war, and refused to answer.</p>

<p>Elsewhere, Ben Collins said to Larry:</p>

<quote who="Ben Collins">

<p>I hate asking this on top of the work you already provide, but would
it be possible to allow rsync access to the repo itself? I have atleast 6
computers on my LAN where I keep source trees (2.4 and 2.5), and it would
be much less b/w on my metered T1 and on your link aswell if I could rsync
one main "mirror" of the cvs repo and then point all my machines at it.</p>

<p>I do a lot of diff'ing and log reading, so it would help out there too if I
didn't have to connect back to bkbits to perform those frequent operations.</p>

</quote>

<p>Larry replied, <quote who="Larry McVoy">If HPA wants to provide
that, that's cool.  I think he might already.  If not, ping me again,
no problem, we'll set something up.</quote> And H. Peter Anvin said
that rsync://rsync.kernel.org/pub/scm/linux/kernel/bkcvs/linux-2.4/ and
rsync://rsync.kernel.org/pub/scm/linux/kernel/bkcvs/linux-2.5/ should
work. Ben thanked him. Shachar Shemesh, however, remarked:</p>

<quote who="Shachar Shemesh">

<p>There is a better tool (for this particular task), called "cvsup". It
does a wonderful job of keeping cvs repositories in synch. I realize I just
asked for a THIRD tool, so it should only go in if the admins are willing
to take care of it.</p>

<p>The idea is that it uses the full duplexity of the channel to get client
side information about the repository on that end while downloading changes,
thus increasing the effective bandwidth. It only falls back to rsynch if CVS
repository specific updates are not possible. I use it on the Wine repository,
and it does, indeed, work very efficiently.</p>

<p>On the negative side - as far as I could tell, neither RedHat nor Mandrake
carry it as a standard package (Debian does, at least in unstable).</p>

</quote>

<p>Later he explained:</p>

<quote who="Shachar Shemesh">

<p>"cvsup" is for synching repositories (I was not talking about "cvs up"
- the command line). It achives the exact same end effect as rsync, except
it is much more bandwidth efficient when used to sync CVS repositories.
Homepage at <a href="http://www.cvsup.org/">http://www.cvsup.org/</a>.</p>

<p>As Adam Richter said in private, however, the tool is a bitch to compile. It
is written in Modula-3, and most people don't have the development environment
to build it. Add to that the fact that most distros don't carry it as a
package (a while back I tried, unsuccessfully, to locate an RPM for it,
anywhere), and you get something that should be deployed with care.</p>

<p>On the other hand, both Wine (where I got to know it) and KDE seem to
offer cvsup for getting the repository, so it can't be THAT difficult.
As also noted above, Debian does carry it in easy to deploy .deb, as part
of the main distro's archive (confirmed available on stable).</p>

</quote>

</section>

<section
  title="New 64-Bit mknod Tool"
  subject="mknod64(1)"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.2/0681.html"
  posts="4"
  startdate="18 Apr 2003 13:13:03 -0800"
  enddate="19 Apr 2003 07:45:29 -0800"
>

<p>Robert Love announced:</p>

<quote who="Robert Love">

<p>I wrote a mknod64(1) tool, so we can play with 64-bit device numbers.
It is available at:</p>

<p><a
href="ftp://ftp.kernel.org/pub/linux/kernel/people/rml/mknod64">ftp://ftp.kernel.org/pub/linux/kernel/people/rml/mknod64</a></p>

<p>for testing.  And that is really its whole purpose because I see no reason
why the mknod in coreutils will not eventually support mknod64(2).</p>

<p>But for now this version works and supports the 64-bit dev_t with a 32:32
split.  It is also identical in functionality to mknod(1), except it does not
support an initial mode other than the default (i.e., no --mode option).</p>

<p>Installation is simple but RPM packages are also available.</p>

<p>Usage is the same as mknod, except you may specify a 32-bit value for
the major and the minor device number.</p>

<p>This currently requires 2.5.67-mm4, but I suspect the 64-bit dev_t work
will eventually make its way into Linus's tree.   </p>

<p>Note that most utilities cannot see the 64-bit device numbers, i.e.  ls(1)
only displays 8-bits of each.  You can do a homemade stat64() or just trust
the code.</p>

<p>With the above kernel and this utility, you can play with 64-bit device
numbers.</p>

</quote>

<p>H. Peter Anvin pointed out, regarding the future of mknod in coreutils:</p>

<quote who="H. Peter Anvin">

<p>actually, once glibc is updated to call SYS_mknod64 and have the right
MAJOR() and MINOR() macros, it shouldn't require any changes to mknod(1).</p>

<p>What would probably be useful for mknod(1), if it doesn't already,
is to allow the major/minor to be specified in any of the standard bases,
i.e. using strtoul(...,...,0).</p>

<p>I belive HP/UX (which have had 32-bit minors for a long time) actually
had ls -l display hexadecimal minors.  I am not advocating that, however,
it probably would break too many scripts.</p>

</quote>

</section>

<section
  title="Linux 2.5.68 Released"
  subject="Linux 2.5.68"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.2/0831.html"
  posts="17"
  startdate="19 Apr 2003 19:11:40 -0800"
  enddate="23 Apr 2003 11:46:30 -0800"
>
<topic>Digital Video Broadcasting</topic>
<topic>FS: devfs</topic>

<p>Linus Torvalds announced <a
href="http://www.kernel.org/pub/linux/kernel/v2.5/ChangeLog-2.5.68">2.5.68</a>
and said:</p>

<quote who="Linus Torvalds">

<p>Tons of changes all over the map. The diff is large, partly because the
s390x support got merged into the s390 port as a 64-bit subset, and the old
s390x architecture files thus became irrelevant. And a merge with Alan gave
us a another architecture instead - h8300.</p>

<p>Lots of dvb updates (digital video), again through Alan. And a major
aic79xx driver update.</p>

<p>Oh, and the devfs stuff by Christoph means that devfs users should beware:
in particular, devfs users need to mount the pts filesystem like everybody
else does, that duplication got killed.</p>

<p>Other than that, just a ton of updates. See changelog for details.</p>

</quote>

<p>Ben Collins pointed out that the devfs changes required more than just
mounting the pts filesystem. He said, <quote who="Ben Collins">you need to
build devpts explicitly now too. Before you could get away with not selecting
devpts as an option.</quote></p>

</section>

<section
  title="More 64-Bit mknod Discussion"
  subject="[PATCH] new system call mknod64"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.2/0924.html"
  posts="43"
  startdate="20 Apr 2003 10:39:32 -0800"
  enddate="22 Apr 2003 12:02:14 -0800"
>
<topic>Backward Compatibility</topic>
<topic>Ioctls</topic>

<mention>David S. Miller</mention>
<mention>Christoph Hellwig</mention>

<p>Andries Brouwer added a mknod64 system call, to deal with his recent
implementation of larger static device numbers. Christoph Hellwig felt
this was putting the cart before the horse, since the data structures
necessitating the use of this system call had not actually been modified
in a way to make the call needed. Christoph felt there was other work to be
done first, before any discussion of a new system call. Andries replied:</p>

<quote who="Andries Brouwer">

<p>Yes, there is a dozen rather uninteresting patches that can be applied
any moment. But a new system call is more important, so I show it in public
at some earlier stage, so that Linus and others, like you, can comment.</p>

<p>Yesterday or the day before Linus preferred __u32 etc for this loopinfo64
ioctl, so I did it that way. Here, since mknod is a traditional Unix system
call, I am still inclined to prefer (unsigned) int above __u32.  Of course
it doesn't matter much.</p>

</quote>

<p>David S. Miller started to address this issue, considering the best
data type to hold the input value; when Linus Torvalds said he rejected the
entire idea of having a single input value to represent both the major and
minor device number. He said, <quote who="Linus Torvalds">The kernel should
get major and minor numbers. It's a sad mistake that UNIX uses "dev_t"
in the first place, and clearly the glibc interface to user mode will have
to be that historical braindamage. But we should realize that the _right_
interface is keeping the &lt;major, minor&gt; tuple explicit, and any new
system call interfaces should be of that type.</quote> Roman Zippel asked what
the advantage was, in this. He said, <quote who="Roman Zippel">Everywhere
it's just a simple number, only when we present that number to the user,
we create some kind of illusion that this split has any meaning.</quote>
Linus replied:</p>

<quote who="Linus Torvalds">

<p>the split has huge meaning inside the kernel. We split the number every
time we open the device, and use that split to look up the result.</p>

<p>There's another issue, though, which may or may not be a good thing. If
we split and re-create the device number, that will always force the "dev_t"
to be in "canonical form", ie if the major and minor both fit in 8 bits,
then we will always fit the whole dev_t in 16 bits.</p>

<p>This shows up as a difference in the two approaches: if you consider the
user-supplied number as a unsplit binary "dev_t", then the user can supply
a 64-bit number like 0x00000001000000001, and we will actually use that as
the dev_t. However, if we split it up, and the user supplies &lt;1,1&gt;,
then we will always generate 0x0000000000000101 as the 64-bit dev_t, and
there is never any way to generate the "non-canonical" form.</p>

<p>Does it matter? Probably not. I actually think it's slightly preferable
to alway shave things in the canonical form, and the networked filesystems
will generally canonicalize it anyway since they usually split it up into
major/minor. But it _is_ potentially a user-visible difference.</p>

</quote>

<p>Christoph pointed out that splitting the number was arbitrary, especially
since the split no longer existed internally in the block device layer,
and would soon be going away for character devices as well, as a result of
Alexander Viro and others' work in those areas. But Alexander replied:</p>

<quote who="Alexander Viro">

<p>Oh, we certainly _do_ split - simply because there are ranges that belong
to same driver (or driver and object).</p>

<p>However, the split boundary is not uniform - it depends on
driver/object/whatnot.  IMO it's a moot point by now, anyway - most of the
kernel couldn't care less about device numbers.</p>

</quote>

<p>But Linus also replied to Christoph with a different take:</p>

<quote who="Linus Torvalds">

<p>Actually, we still do it for both block _and_ character devices.</p>

<p>Look at "nfs*xdr.c" to see what's up.</p>

<p>In other words, that split is definitely not virtual. It's a real thing
with real visibility for users.</p>

<p>The fact that the kernel internally has generalized it away doesn't
matter. Any kernel virtualization of the number still _has_ to account for
the fact that it's a real thing.</p>

<p>Put another way:</p>

<p>        0x0000000000000101</p>

<p>_has_ to open the same file as</p>

<p>        0x0000000100000001</p>

<p>because otherwise the kernel virtualization is broken (since they will
look the same to a user, and they will end up being written to disk the
same way).</p>

<p>Thus any code that only looks at 64-bit dev_t without taking this into
account is BUGGY.</p>

<p>One way to avoid the bug is to always keep all dev_t numbers in "canonical
format". Which happens automatically if the interface is &lt;major, minor&gt;
rather than a 64-bit blob.</p>

<p>I personally think that anything that uses "dev_t" in _any_ other way
than &lt;major,minor&gt; is fundamentally broken.</p>

</quote>

<p>Close by, part of the discussion involved implementation details that could
potentially lose backward-compatibility. This was unacceptable to Linus, and he
said:</p>

<quote who="Linus Torvalds">

<p>Old and new drivers alike will use the MAJOR() macro, and that macro
had better work with old and new kernels. Agreed? (And if you don't agree,
don't even bother to answer, I'm not really interested in even discussing
something so fundamental).</p>

<p>And regardless of whether a person uses an old or a new library, they
had better see the same MAJOR() and MINOR() values for a legacy device,
like /dev/hda1. In other words, the library version of MAJOR(),MINOR() _has_
to return the value 3,1, or it can break perfectly valid programs.</p>

<p>Again, if you don't agree, don't even bother sending me email any more
about this issue. This is not negotiable. We _will_ have backwards and
forwards compatibility, and that's final.</p>

<p>This means that MAJOR() has to look at bits 8..15 if the value is small.
No ifs, buts and maybes about it.</p>

<p>HOWEVER, clearly MAJOR() has to look at other bits too, otherwise it
wouldn't make any sense to make a bigger dev_t in the first place. The
current MAJOR() is the logical extension.</p>

<p>But that _will_ force aliasing, unless you start doing some really funky
things (make the dev_t look more like a UTF-8 unicode-like extension, which is
obviously possible). In other words, there will be OTHER values for "dev_t"
that will _also_ look like the tuple &lt;3,1&gt;.</p>

<p>And my requirements are that</p>

<p>

<ul>

<li>other values of dev_t that also look like &lt;3,1&gt; had better act
_identically_ to the legacy values. It _has_ to work this way, since otherwise
you'd have a total maintenance nightmare, with "ls -l" showing two device
files as being identical, yet having different behaviour.</li>

<li>Device drivers that ask for "major 3, minors 0-0xfff" _have_ to do the
sane thing. In particular, in the presense of aliases (see above), it has
to match _both_ aliases (see above).</li>

</ul>

</p>

<p>These are not things open for discussion. We know what the behaviour MUST
BE. Aliases _have_ to behave identically, anything else is _indisputably_
crap.</p>

<p>And I claim that this means that you have to have a mapping somewhere.
You're free to come up with new ideas, but I don't think it will work.
Keep the above rules in mind: backwards compatibility and aliases that work
identically. That's all it really boils down to.</p>

</quote>

</section>

<section
  title="Many Drivers Broken By IRQ API Changes"
  subject="updates for the new IRQ API"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.2/1029.html"
  posts="4"
  startdate="21 Apr 2003 03:29:34 -0800"
  enddate="22 Apr 2003 14:15:09 -0800"
>
<topic>User-Mode Linux</topic>
<topic>Version Control</topic>

<p>Andrew Morton announced:</p>

<quote who="Andrew Morton">

<p>A change was made today to the kernel's IRQ handlers.  See</p>

<p><a
href="http://sourceforge.net/mailarchive/forum.php?thread_id=1999147&amp;forum_id=2314">http://sourceforge.net/mailarchive/forum.php?thread_id=1999147&amp;forum_id=2314</a></p>

<p>for details.</p>

<p>The patch at</p>

<p><a
href="ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.5/2.5.68/2.5.68-irq-fixes.patch.gz">ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.5/2.5.68/2.5.68-irq-fixes.patch.gz</a></p>

<p>Is Linus's current bitkeeper tree, plus fixes for 350 files.  I got
most of it, but various scsi drivers and non-x86 architectures will still
need work.</p>

</quote>

<p>Since this change had an impact on most drivers, requiring source-level
changes, Roman Zippel suggested:</p>

<quote who="Roman Zippel">

<p>Hmm, if we are breaking already every driver, how about gettting rid of the
pt_regs argument. The timer interrupt is the only real user and it can also
be stored in irq_desc_t, from where the timer can get it with the irq number.
To preserve compatibility we could add something like this for 2.4:</p>

<pre>#define alloc_irq(irq, handler, flags, name, id) \
        request_irq(irq, (irqreturn_t (*)(int, void *, struct pt_regs *))handler, flags, name, id)</pre>

</quote>

<p>David S. Miller replied, <quote who="David S. Miller">Casting
'handler' is not acceptable, see Linus's comments he added at the top of
interrupt.h</quote></p>

<p>Elsewhere, Oleg Drokin posted a patch, saying, <quote who="Oleg Drokin">Here
is UML's part.  I tried it and stuff compiles and works for me.</quote></p>

</section>

<section
  title="Status Of Hyperthreading Scheduler Enhancements"
  subject="[patch] HT scheduler, sched-2.5.68-A9"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.2/1150.html"
  posts="12"
  startdate="21 Apr 2003 11:13:31 -0800"
  enddate="23 Apr 2003 01:12:29 -0800"
>
<topic>Big O Notation</topic>
<topic>Hyperthreading</topic>
<topic>Version Control</topic>

<mention>Martin J. Bligh</mention>

<p>Ingo Molnar announced:</p>

<quote who="Ingo Molnar">

<p>the attached patch (against 2.5.68 or BK-curr) is the latest implementation
of the "no compromises" HT-scheduler. I fixed a couple of bugs, and the
scheduler is now stable and behaves properly on a 2-CPU-2-sibling HT
testbox. The patch can also be downloaded from:</p>

<p><a
href="http://redhat.com/~mingo/O(1)-scheduler/">http://redhat.com/~mingo/O(1)-scheduler/</a></p>

<p>bug reports, suggestions welcome.</p>

</quote>

<p>Martin J. Bligh took a look and noticed that, while there were definite
performance improvements under high loads; for lower loads there seemed to
be some performance degradation. Ingo felt this was most likely just a bug,
and not systemic to the scheduler changes.</p>

</section>

<section
  title="Status Of matroxfb"
  subject="2.5.68 state of matroxfb"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.2/1500.html"
  posts="4"
  startdate="22 Apr 2003 12:53:02 -0800"
  enddate="23 Apr 2003 02:43:04 -0800"
>
<topic>Framebuffer</topic>

<p>Ed Sweetman asked, <quote who="Ed Sweetman">I'm just wondering what
the state of the matroxfb driver is and why it's an option in the kernel
when it's completely uncompilable and has been for many months.</quote>
Matt Reppert replied, <quote who="Matt Reppert">A lot of FB stuff has
been nonworking at various stages, since the whole console layer has been
more or less rewritten over the course of 2.5.  (Of course, a lot of kernel
internals have changed, so entire *CPU architectures* have been uncompilable
for significant periods of time.)</quote> He added that the configuration
option was still included in kernel compilation in spite of the breakage,
because <quote who="Matt Reppert">support is planned but there hasn't been
time to get all the issues hammered out. A lot of kernel devs still are
volunteers that have to do this in whatever free time they have, between
actual jobs or, sometimes more importantly, between searching for jobs,
so things don't always happen instantly.)</quote> At some point, Petr
Vandrovec also said, <quote who="Petr Vandrovec">I'll try to put stripped
down matroxfb into kernel sometime in future...  Unfortunately as 2.5.x fbdev
infrastructure does not fullfill my needs, it will be stripped down version
(which fits into current fbdev, and which will not support text mode &amp;
fbset -fb /dev/tty*), and I'll not test it a lot, as it is hard to test
something you cannot use in daily work...</quote></p>

</section>

<section
  title="Device Class Rework"
  subject="[RFC] Device class rework [0/5]"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.2/1512.html"
  posts="10"
  startdate="22 Apr 2003 12:55:45 -0800"
  enddate="23 Apr 2003 08:23:11 -0800"
>
<topic>FS: sysfs</topic>
<topic>Hot-Plugging</topic>

<mention>Mike Anderson</mention>

<p>Greg KH said:</p>

<quote who="Greg KH">

<p>Here's a set of patches that rework the current class support in the
kernel today into something that works a bit better, and is simpler to
use.</p>

<p>Currently, classes are assigned to drivers at compile time (or at the  
latest, at driver_register() time) and enforce a 1 to 1 relationship
between class devices and struct device objects.  This is not practical
in the kernel, as there are a number of physical devices that
correspond to multiple "class" devices.  It's also unwieldy to bind
classes to devices so early.  They should be explicitly done later when
the class device is registered with that subsystem.</p>

<p>So with that in mind, here's some changes.  The rework of the driver
core is all done right now in one big patch, but I'll split it up
smaller for inclusion later on.</p>

<p>This patch gets rid of struct device_class and struct device_interface,
and replaces them with struct class[1], struct class_device, and struct
class_interface.  struct class is much like struct device_class used to
be, but is much smaller, and not bound to any drivers.  This makes the
driver core a lot smaller, as we get hotplug events for free now (struct
class_device is a kobject), and is more flexible.</p>

<p>A struct class_device is registered with a class when that device is
registered within the kernel.  As an example of this, see the tty patch
later on in this email thread.</p>

<p>A struct class_interface is used to get a callback whenever a struct
class_device is registered or unregistered with a class.  This can be
used to attach files to the class_device, or do more complicated things.
The patch that changes the cpufreq code in this email thread shows how
this can be used (although the cpufreq code can be further simplified
based on these changes, I've not done it yet.)</p>

<p>If there are no major objections to this, I'll split it up into smaller
pieces for inclusion in the kernel tree.</p>

<p>I'll follow this message up with 5 patches that do the following things:</p>

<p>

<ul>

<li>all of the driver core conversions.  This is the meat of the changes.</li>

<li>Fixes for the input core to build properly.  I've not converted the
input core to the new class model yet, but will after this.</li>

<li>Crude patches to the scsi core to get it to build properly.  This patch
is not correct, but needed if your machines have scsi.  Mike Anderson has
said he will fix up the scsi code based on these core changes.</li>

<li>cpufreq changes.  This converts the cpufreq code to the new driver
class changes.</li>

<li>tty changes.  This converts the tty code to the new driver class changes.
With this patch, we now show all tty devices, and their device major/minor
number in the /sys/class/tty/ directory.  Yes, this is still a bit crude
(all ptys are shown, and they should not be), but it's an example of why
these changes are needed, and how to add class support to a subsystem.
I'll rework this after Christoph's and Al Viro's tty changes are in the main
tree, as we all are touching the same part of code.</li>

</ul>

</p>

<p>Oh, and I didn't touch the pcmcia code yet either, with these patches,
that code will not compile properly.</p>

</quote>

</section>

<section
  title="IDE Maintainership And Licensing Changes"
  subject="ide-2.5.68.patch"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.2/1911.html"
  posts="2"
  startdate="23 Apr 2003 17:47:36 -0800"
  enddate="24 Apr 2003 15:22:33 -0800"
>
<topic>Disks: IDE</topic>
<topic>Serial ATA</topic>

<mention>Alan Cox</mention>

<p>Andre Hedrick said:</p>

<quote who="Andre Hedrick">

<p>This patch is to promote Bartlomiej to a well earned position as the
Global IDE Maintainer, as I have stepped tp the side to handle the SATA and
vendor chipset issues.  My time here was to clean up the transport to allow
the simplicity of the protocol to be expressed.</p>

<p>If there is an issue where one believes I need tp be included in the
thread please CC me as I limit my reading of lkml directly.</p>

<p>This patch also addresses some text whose intent may be a restriction to
GPL; however, GPL itself is flawed as it relates to concatenation or appending
addition information to a binary program, be it a kernel or app.  whose current
license status is GPL or LGPL.  With this in mind, I will formally announce
that all of my contributions to the kernel over the past 5 years or so are
to be dual licensed in OSL/GPL format.  I would strongly suggest any person
who has a stake in the kernel to review OSL and consider.</p>

<p>If anyone has an issue with this change, get over it.  If you can not
get over it, you can pay for the legal opinion for review.</p>

</quote>

<p>Shane Shrybman replied:</p>

<quote who="Shane Shrybman">

<p>I didn't see any replies to this post so I felt compelled to say
something.</p>

<p>Thanks Andre!! Thanks for being the linux-ide guy for so long and sticking
with it threw the tougher times. And for trying (and doing) the right thing
by us. ( and for not frying any of my data :)</p>

<p>And just as big a thanks to the linux-ide coordinator, Alan Cox!</p>

<p>And a big hearty welcome to the new linux-ide guy, Bartlomiej!</p>

</quote>

</section>

<section
  title="IDE Power Management"
  subject="[RFC/PATCH] IDE Power Management try 1"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.3/0122.html"
  posts="14"
  startdate="24 Apr 2003 04:59:54 -0800"
  enddate="25 Apr 2003 05:58:29 -0800"
>
<topic>Disks: IDE</topic>

<p>Benjamin Herrenschmidt said:</p>

<quote who="Benjamin Herrenschmidt">

<p>This patch is a first try at implementing proper IDE power management.
It's not intended to be merged as-is, there is some uglyness here or there,
it's here for comments and discussion.</p>

<p>The point is to pipe the power management requests through the request
queue for proper locking. Since those requests involve several operations
that have to be tied together with the queue beeing locked for further 'user'
requests, they are implemented as a state machine with specific callbacks
in the subdrivers.</p>

<p>The guts of the patch is the core changes. I did the actual implementation
for ide-disk &amp; ide-cd as a way to quickly validate it (it works), but
I'm sure we want to do more than just what I implemented here. At least it's
ok for PPC, but I beleive some x86 will want you to do more (Alan suggested
reverting to PIO for example, to please some BIOSes, though that would suck
badly for suspend-to-disk, there may be more involved regarding recovering
from errors in flush too).</p>

<p>One thing that should probably be cleaned up is the difference between the
suspend and the resume request. I didn't want to implement 2 different request
bits to avoid using too much of that bit-space, and because most of the core
handling is the same. So right now, I carry in the special structure attached
to the request, 2 fields. An int indicating if we are doing a suspend or a
resume op, and an int that is the actual state machine step.</p>

<p>However, for convenience, my ide-cd and ide-disk implementation implement
resume just as different step number in the same routine...</p>

<p>So we could either get rid of the "int suspend" field completely and just
define 2 different ranges for "step". Or we could keep "suspend", but then it
may make sense to split the sub-driver ops in 2 (suspend/suspend_completion
&amp; resume/resume_completion).</p>

</quote>

</section>

<section
  title="Speeding Up Boot-Time"
  subject="[ANNOUNCE] OSDL Whitepaper: &quot;Reducing System Reboot Time With Kexec&quot;"
  posts="3"
  startdate="24 Apr 2003 09:09:24 -0800"
  enddate="24 Apr 2003 12:55:27 -0800"
>
<topic>Kexec</topic>

<p>Andy Pfiffer announced:</p>

<quote who="Andy Pfiffer">

<p>URL: <a
href="http://www.osdl.org/docs/reducing_system_reboot_time_with_kexec.pdf">http://www.osdl.org/docs/reducing_system_reboot_time_with_kexec.pdf</a></p>

<p>Title:<br />
Reducing System Reboot Time With kexec</p>

<p>Abstract:<br />
kexec is a developing feature for Linux 2.5.x that allows an x86 Linux
kernel to load and run another kernel instead of the platform BIOS and
bootloader. By skipping the platform BIOS during a reboot, kexec can reduce
downtime in enterprise class systems, and reduce turn-around time for Linux
kernel developers. This paper presents measurements of boot time reduction
through the use of kexec.</p>

</quote>

<p>Timothy D. Witham replied:</p>

<quote who="Timothy D. Witham">

<p>  So questions and comments are being accepted?</p>

<p>     The actual values from the measurements in an appendix
     would be helpful.  Including the boot time breakdown
     for the 8 way.</p>

<p>     On your chart, the time saved column is distracting to
     me as it is extra data.  On the relative percentage column
     if it could be kexec/full boot that would make it so that
     I wouldn't have to go back to the text to understand the
     column.  Also on the kernel boot time, I think that you
     are talking about the kernel init time.  So why not call
     it that?</p>

<p>  On future and ongoing work.</p>

<p>     The crash dump seems to be orthogonal to fast booting.  I
     would like to see future and ongoing work that applies to
     fast booting.</p>

</quote>

<p>Andy thanked him for the feedback. To Timothy's objection to the
organization of the data columns, Andy replied, <quote who="Andy Pfiffer">Fair
enough.  The 8-way measurements aren't currently available because that
specific system has been assigned to another OSDL Lab Associate.</quote>
Also on the question of 'boot time' versus 'init time', Andy said, <quote
who="Andy Pfiffer">I was hoping to avoid dancing around the semantics and
interpretation of "booted" vs. "initialized".  I guess that didn't work as
well as I had hoped. ;^)</quote></p>

</section>

<section
  title="Finding Patches Using ChangeLog Information"
  subject="ChangeLog suggestion"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.3/0651.html"
  posts="16"
  startdate="25 Apr 2003 22:21:05 -0800"
  enddate="26 Apr 2003 12:08:22 -0800"
>
<topic>USB</topic>
<topic>Version Control</topic>

<mention>Alan Cox</mention>
<mention>Arjan van de Ven</mention>
<mention>John Bradford</mention>
<mention>Andrew Morton</mention>

<p>Zack Brown (I) asked:</p>

<quote who="Zack Brown">

<p>Linus, Marcelo,</p>

<p>In each changelog entry, it would be really useful to include the Message-ID
of that email in a regex-parsable location. This way, if the email was cced
to lkml it would be possible for folks to track down the actual patch.</p>

<p>I'm not familiar with your scripts, but I'd be surprised if this were very
difficult to implement. At the same time, there are many cases of changelog
entries that read only 'USB' or something equally unhelpful, where there is
little chance that anyone could track down the corresponding patch.  Having the
Message-ID in those cases would make all the difference in the world.</p>

</quote>

<p>Linus Torvalds replied:</p>

<quote who="Linus Torvalds">

<p>Well, the scripts can take it, but quite frankly I'd rather not clutter
the changelogs up with crud that really doesn't matter.</p>

<p>The thing is, the stuff that already _is_ in the changelog is certainly
enough to identify the email if you just have a reasonable search engine.
You have author, comments and diff, and if that isn't enough to identify
the thing then something is wrong.</p>

<p>Also, _most_ of the patches by far end up coming as personal emails, and
while they have often shown up on linux-kernel in _some_ way, it won't be
the same email that got sent to me. The email that showed up on the mailing
list will often have been of the type "please test this out and if it works
for you I'll send it to Linus", or it will have been posted by the original
author and then the actual patch made it to me either through somebody elses
BK tree _or_ through a person like Andrew Morton or Alan Cox.</p>

<p>In other words, what you ask for is ugly (yes, I actually look at the
output of "bk changes") _and_ not very useful.</p>

</quote>

<p>Elsewhere and before Linus' reply, John Bradford said to Zack that instead
of a Message-ID, it might be better to have a URL linking directly to the
archived patch. This seemed feasible to him, since BitKeeper generated the
changelogs itself. Arjan van de Ven pointed out that connecting patches to
changelog entries was already fairly trivial, via the bk-commits mailing
lists for 2.4 and 2.5 development. Linus also replied to John, saying that
actually, it would be quite difficult to isolate a URL corresponding to a
particular patch. He said:</p>

<quote who="Linus Torvalds">

<p>yes, the changelogs are generated by BitKeeper, but what gets fed into
bitkeeper is controlled by some scripts I wrote, which are the ones that take
the email and munge it into a readable format etc. So by the time the thing
hits my BK repository, the email headers will all have been thrown away,
except for "From: " and "Subject: ". So BK never sees the full email.</p>

<p>(Even my scripts don't see the full email a large percentage of the time:
I end up prettifying the emails for actual application by first removing
things like "Hi Linus, please apply this" etc which are pointless in the
changelog).</p>

</quote>

<p>This and Linus' other post made sense to John, and he agreed that
there seemed to be no sensible way to provide a URL to each patch in the
changelogs.</p>

</section>

<section
  title="Open POSIX Test Suite 1.0.0"
  subject="Open POSIX Test Suite 1.0.0"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0304.3/1526.html"
  posts="1"
  startdate="30 Apr 2003 14:50:14 -0800"
>
<topic>POSIX</topic>
<topic>Scheduler</topic>

<mention>Robert Williamson</mention>

<p>Rolla N. Selbak said:</p>

<quote who="Rolla N. Selbak">

<p>Release 1.0.0 of the Open POSIX Test Suite is now available at <a
href="http://posixtest.sourceforge.net">http://posixtest.sourceforge.net</a></p>

<p>This release contains complete core POSIX conformance interface tests
for: Signals, Message queues, Semaphores, Timers, &lt;sched.h&gt; process
scheduling.  Threads core tests 95% complete.</p>

<p>It also contains bug fixes from 0.9.0. The release notes that appear on
download describe how to compile and run these tests.  The file QUICK-START
is a quick and practical way to get started building and running the tests.
The README page and the Open POSIX Test Suite website (above) will give more
information on the project goals and progress as well as information on how
to contribute or contact us if you are interested.</p>

<p>Many thanks to Jerome Marchand, Robert Williamson and other members of
the POSIX testing community for their bug fixes, patches, and suggestions
on how to improve the 0.9.0 suite.</p>

<p>The Open POSIX Test Suite is an open source test suite with the goal
of creating conformance test suites, as well as potentially functional
and stress test suites, to the functions described in the IEEE Std
1003.1-2001 System Interfaces specification. Initial work is focusing on
timers, threads, semaphores, signals, and message queues. Feel free to
contact posixtest-discuss@lists.sourceforge.net if you would like further
information.</p>

</quote>

</section>

</kc>

