<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="245" date="14 Dec 2003 00:00:00 -0800" />

<intro>

<p>I'm going to be on vacation in Manhattan from December 19th until January
5th. If anyone knows of some nice geeky events in Manhattan during that time,
please <a href="mailto:zbrown@tumblerings.org">let me know</a>.</p>

<p>This issue of Kernel Traffic is dedicated to Pat McGovern, the head of <a
href="http://www.sf.net">SourceForge</a>. Also Chris Conrad the SourceForge
site code maintainer, and Adi Alurkar, the SourceForge DBA. These are some
nice guys, and if you like SourceForge, you should let them know, since it
will make them happy. I'd like to also dedicate this issue to Allan Cruse,
for a really enjoyable evening we had once with Pat.</p>

<p>Special thanks go out to Vadim Lebedev for writing the script I use to create
the Subject links from each summary to the mailing list discussion. The script
as it stands looks like this:</p>

<p><tt>#/bin/sh<br />
&#160;<br />
SUBJ=$1<br />
AUTHOR=$2<br />
DAY=$3<br />
MONTH=$4<br />
YR=$5<br />
&#160;<br />
SUBJ=`echo $SUBJ | sed -e "s/ /%20/g"`<br />
AUTHOR=`echo $AUTHOR | sed -e "s/ /%20/g"`<br />
&#160;<br />
P1="&amp;as_uauthors=$AUTHOR&amp;as_usubject=$SUBJ&amp;as_drbb=b&amp;as_mind=$DAY&amp;as_minm=$MONTH&amp;as_miny=$YR"<br />
P2="&amp;as_maxd=$DAY&amp;as_maxm=$MONTH&amp;as_maxy=$YR"<br />
&#160;<br />
URL="http://www.google.com/groups?as_ugroup=linux.kernel$P1$P2"<br />
URL=`echo $URL | sed -e "s/\\&amp;/\\&amp;amp;/g"`<br />
echo $URL</tt></p>

<p>The script still isn't perfect, though still very useful. If you try
running it on some of the data from the summaries below, you'll see that the
links I ended up using are different from the links the script returned. If
anyone sees a way to directly generate the URLs I've used (or an equivalent),
please let me know. Or if you're interested in working with Vadim to improve
this version, let me know and I'll put you in touch with him.</p>

</intro>

<stats posts="1389" size="6841" contrib="496" multiples="227" lastweek="162">

<person posts="72" size="289" who="William Lee Irwin III" />
<person posts="44" size="149" who="Greg KH" />
<person posts="28" size="87" who="Linus Torvalds" />
<person posts="27" size="114" who="Marcelo Tosatti" />
<person posts="26" size="173" who="Geert Uytterhoeven" />
<person posts="20" size="100" who="Jeff Garzik" />
<person posts="19" size="64" who="Zwane Mwaikambo" />
<person posts="16" size="66" who="Andrea Arcangeli" />
<person posts="16" size="50" who="Mike Fedyk" />
<person posts="13" size="83" who="Craig Bradney" />
<person posts="13" size="50" who="Gene Heskett" />
<person posts="12" size="141" who="Joe Thornber" />
<person posts="12" size="40" who=" (bill davidsen)" />
<person posts="12" size="37" who="Stephan von Krawczynski" />
<person posts="12" size="37" who=" (=?iso-8859-1?q?M=E5ns_Rullg=E5rd?=)" />
<person posts="11" size="71" who="Bob" />
<person posts="11" size="37" who="&quot;H. Peter Anvin&quot;" />
<person posts="11" size="33" who="Pavel Machek" />
<person posts="10" size="95" who="Roger Luethi" />
<person posts="10" size="36" who="&quot;Randy.Dunlap&quot;" />
<person posts="10" size="34" who="OGAWA Hirofumi" />
<person posts="9" size="47" who="Stian Jordet" />
<person posts="9" size="39" who="&quot;Richard B. Johnson&quot;" />
<person posts="9" size="34" who="Pat LaVarre" />
<person posts="8" size="48" who="Dmitry Torokhov" />
<person posts="8" size="29" who=" &lt;b@netzentry.com&gt;" />
<person posts="8" size="28" who="Ethan Weinstein" />
<person posts="8" size="24" who="Paul Jakma" />
<person posts="7" size="30" who="&quot;Martin J. Bligh&quot;" />
<person posts="7" size="28" who="Ralf Hildebrandt" />
<person posts="7" size="25" who="=?iso-8859-1?Q?J=F6rn?= Engel" />
<person posts="7" size="24" who="Jean-Marc Valin" />
<person posts="7" size="23" who="Guennadi Liakhovetski" />
<person posts="7" size="21" who="Lukas Hejtmanek" />
<person posts="7" size="18" who="&quot;Patrick Noel&quot;" />
<person posts="7" size="17" who="Meelis Roos" />
<person posts="6" size="168" who="Ryan Underwood" />
<person posts="6" size="113" who="&quot;Svetoslav Slavtchev&quot;" />
<person posts="6" size="29" who="Matthias Andree" />
<person posts="6" size="28" who="Philippe Troin" />
<person posts="6" size="26" who="Bartlomiej Zolnierkiewicz" />
<person posts="6" size="21" who="Russell King" />
<person posts="6" size="21" who="Ian Kent" />
<person posts="6" size="20" who="James Bourne" />
<person posts="6" size="19" who="Paul Menage" />
<person posts="6" size="17" who="&quot;Peter Bergmann&quot;" />
<person posts="5" size="62" who="Dan Creswell" />
<person posts="5" size="39" who="&quot;Perez-Gonzalez, Inaky&quot;" />
<person posts="5" size="37" who="Nick Piggin" />
<person posts="5" size="33" who="Misha Nasledov" />
<person posts="5" size="29" who="Maneesh Soni" />
<person posts="5" size="25" who="&quot;Russell \&quot;Elik\&quot; Rademacher&quot;" />
<person posts="5" size="23" who="Jamie Lokier" />
<person posts="5" size="22" who="Trond Myklebust" />
<person posts="5" size="21" who="&quot;Yu, Luming&quot;" />
<person posts="5" size="21" who="Matt Domsch" />
<person posts="5" size="20" who="Kristian Peters" />
<person posts="5" size="20" who="Stephen Satchell" />
<person posts="5" size="20" who="(Valdis.Kletnieks)" />
<person posts="5" size="18" who="Willy Tarreau" />
<person posts="5" size="16" who="Arnaldo Carvalho de Melo" />
<person posts="5" size="16" who="&quot;Prakash K. Cheemplavam&quot;" />
<person posts="5" size="16" who="Mikael Pettersson" />
<person posts="5" size="15" who="Dave Jones" />
<person posts="5" size="15" who="&quot;David S. Miller&quot;" />
<person posts="5" size="15" who="Maciej Zenczykowski" />
<person posts="5" size="14" who="Andre Tomt" />
<person posts="5" size="14" who="Christoph Hellwig" />
<person posts="5" size="12" who="&quot;Mark Symonds&quot;" />
<person posts="4" size="48" who="(inaky.perez-gonzalez)" />
<person posts="4" size="45" who="Ed Sweetman" />
<person posts="4" size="39" who="Lee" />
<person posts="4" size="37" who="(lkml-031128)" />
<person posts="4" size="28" who="Nikita Danilov" />
<person posts="4" size="22" who="Mickael Marchand" />
<person posts="4" size="21" who="Jakub Bogusz" />
<person posts="4" size="21" who="Alex Riesen" />
<person posts="4" size="20" who="Rafal Skoczylas" />
<person posts="4" size="17" who="Len Brown" />
<person posts="4" size="16" who="&quot;Robert L. Harris&quot;" />
<person posts="4" size="16" who="Mike Gorse" />
<person posts="4" size="15" who="Roberto Sanchez" />
<person posts="4" size="15" who="Phillip Lougher" />
<person posts="4" size="14" who="(venom)" />
<person posts="4" size="14" who="&quot;Collins, Bernard F. (Skip)&quot;" />
<person posts="4" size="14" who="Matthew Reppert" />
<person posts="4" size="13" who="Tom Rini" />
<person posts="4" size="13" who="Rik van Riel" />
<person posts="4" size="13" who="Hans Reiser" />
<person posts="4" size="13" who="Keith Owens" />
<person posts="4" size="12" who="Jens Axboe" />
<person posts="4" size="12" who="John Bradford" />
<person posts="4" size="12" who="Helge Hafting" />
<person posts="4" size="12" who="&quot;Tero Knuutila&quot;" />
<person posts="4" size="12" who="&quot;Peter C. Norton&quot;" />
<person posts="4" size="12" who="Arjan van de Ven" />
<person posts="4" size="12" who="Xose Vazquez Perez" />
<person posts="4" size="11" who="hanasaki" />
<person posts="4" size="10" who="Ian Soboroff" />
<person posts="4" size="10" who="Chris Wright" />
<person posts="3" size="106" who="Julien Oster" />
<person posts="3" size="67" who="Per Buer" />
<person posts="3" size="43" who="Anton Altaparmakov" />
<person posts="3" size="38" who="Josh McKinney" />
<person posts="3" size="34" who="Tuukka Toivonen" />
<person posts="3" size="31" who="&quot;Colin Coe&quot;" />
<person posts="3" size="28" who="Charles Bueche" />
<person posts="3" size="25" who="Daniel McNeil" />
<person posts="3" size="24" who="&quot;Jonathan A. Zdziarski&quot;" />
<person posts="3" size="20" who="&quot;Daniel Flinkmann&quot;" />
<person posts="3" size="13" who="=?ISO-8859-1?Q?Mika_Penttil=E4?=" />
<person posts="3" size="13" who="Jesse Allen" />
<person posts="3" size="12" who="Dominik Kubla" />
<person posts="3" size="12" who="Martin Josefsson" />
<person posts="3" size="11" who="David Woodhouse" />
<person posts="3" size="11" who="Charles Manning" />
<person posts="3" size="11" who="Jan-Benedict Glaw" />
<person posts="3" size="11" who="Erez Zadok" />
<person posts="3" size="11" who="Petr Sebor" />
<person posts="3" size="11" who="Vladimir Saveliev" />
<person posts="3" size="11" who="&quot;David Schwartz&quot;" />
<person posts="3" size="10" who="Ian Kumlien" />
<person posts="3" size="10" who="Ulrich Drepper" />
<person posts="3" size="10" who="Ionut Georgescu" />
<person posts="3" size="10" who="&quot;Amir Hermelin&quot;" />
<person posts="3" size="10" who="Markku Savela" />
<person posts="3" size="10" who="Larry McVoy" />
<person posts="3" size="10" who="Anton Blanchard" />
<person posts="3" size="9" who="snpe" />
<person posts="3" size="9" who="Muli Ben-Yehuda" />
<person posts="3" size="9" who="Andrew Volkov" />
<person posts="3" size="9" who="Matthias Urlichs" />
<person posts="3" size="9" who="Bill Davidsen" />
<person posts="3" size="9" who="Ingo Molnar" />
<person posts="3" size="9" who="Adrian Bunk" />
<person posts="3" size="9" who="Andreas Schwab" />
<person posts="3" size="9" who="Eyal Lebedinsky" />
<person posts="3" size="9" who="Sean Neakums" />
<person posts="3" size="8" who="Wakko Warner" />
<person posts="3" size="8" who="Scott Robert Ladd" />
<person posts="3" size="8" who="Allen Martin" />
<person posts="3" size="8" who="Per Andreas Buer" />
<person posts="3" size="8" who="Jose Luis Domingo Lopez" />
<person posts="3" size="7" who="Jan De Luyck" />
<person posts="3" size="7" who="Jon Smirl" />
<person posts="3" size="7" who="Kenny Simpson" />
<person posts="3" size="7" who="Danny Brow" />
<person posts="2" size="74" who="(ross.alexander)" />
<person posts="2" size="54" who="Rusty Russell" />
<person posts="2" size="34" who="Arjan van Staalduijnen" />
<person posts="2" size="32" who="Mihai RUSU" />
<person posts="2" size="25" who="Erik Andersen" />
<person posts="2" size="19" who="Anssi Saari" />
<person posts="2" size="19" who="Matthew Kanar" />
<person posts="2" size="11" who="jw schultz" />
<person posts="2" size="11" who="Mark Wong" />
<person posts="2" size="11" who="&quot;Jose R. Santos&quot;" />
<person posts="2" size="11" who="&quot;Grover, Andrew&quot;" />
<person posts="2" size="10" who="Jean Tourrilhes" />
<person posts="2" size="10" who="Craig Thomas" />
<person posts="2" size="10" who="Fabio Coatti" />
<person posts="2" size="9" who="Miles Bader" />
<person posts="2" size="9" who="Ville Hallivuori" />
<person posts="2" size="9" who="Tim Timmerman" />
<person posts="2" size="8" who="Nigel Cunningham" />
<person posts="2" size="8" who="Chris Petersen" />
<person posts="2" size="8" who="Jon Burgess" />
<person posts="2" size="8" who="Matthew Wilcox" />
<person posts="2" size="8" who="Bongani Hlope" />
<person posts="2" size="8" who="Michal Rokos" />
<person posts="2" size="8" who="(cheuche+lkml)" />
<person posts="2" size="8" who=" (David Wagner)" />
<person posts="2" size="8" who="Torsten Scheck" />
<person posts="2" size="7" who="Eduard Bloch" />
<person posts="2" size="7" who="Max Payne" />
<person posts="2" size="7" who="Joshua Kwan" />
<person posts="2" size="7" who="Henning Meier-Geinitz" />
<person posts="2" size="7" who="Jonathan Fors" />
<person posts="2" size="7" who="Vladimir Zidar" />
<person posts="2" size="7" who="Andreas Beckmann" />
<person posts="2" size="7" who="Dax Kelson" />
<person posts="2" size="7" who="Frank van Maarseveen" />
<person posts="2" size="7" who="&quot;Paul Rolland&quot;" />
<person posts="2" size="7" who="Nathan Scott" />
<person posts="2" size="7" who="(reg)" />
<person posts="2" size="7" who="&quot;Andrew Vasquez&quot;" />
<person posts="2" size="6" who="Herbert Poetzl" />
<person posts="2" size="6" who="Santiago Garcia Mantinan" />
<person posts="2" size="6" who="Erik Hensema" />
<person posts="2" size="6" who="Hugh Dickins" />
<person posts="2" size="6" who="Adrian Knoth" />
<person posts="2" size="6" who="Markus =?ISO-8859-1?Q?H=E4stbacka?=" />
<person posts="2" size="6" who="(phillip)" />
<person posts="2" size="6" who="Neal Stephenson" />
<person posts="2" size="6" who="Dmytro Bablinyuk" />
<person posts="2" size="6" who="Vitaly Fertman" />
<person posts="2" size="6" who="Tomasz Rola" />
<person posts="2" size="6" who="Domen Puncer" />
<person posts="2" size="6" who="Peter Daum" />
<person posts="2" size="6" who="&quot;Aurelian Pop&quot;" />
<person posts="2" size="5" who="RunNHide" />
<person posts="2" size="5" who="Jeremy Maitin-Shepard" />
<person posts="2" size="5" who="Andrew Walrond" />
<person posts="2" size="5" who="Guennadi Liakhovetski" />
<person posts="2" size="5" who="Tomasz Torcz" />
<person posts="2" size="5" who="&quot;Prakash K. Cheemplavam&quot;" />
<person posts="2" size="5" who="Andi Kleen" />
<person posts="2" size="5" who="(Andries.Brouwer)" />
<person posts="2" size="5" who="Jens Benecke" />
<person posts="2" size="5" who="(viro)" />
<person posts="2" size="5" who="Christian" />
<person posts="2" size="5" who="Ralf Orlowski" />
<person posts="2" size="5" who="Paul P Komkoff Jr" />
<person posts="2" size="5" who="Marc-Christian Petersen" />
<person posts="2" size="5" who="Keith Owens" />
<person posts="2" size="5" who="&quot;A. S.&quot;" />
<person posts="2" size="5" who="Arnd Bergmann" />
<person posts="2" size="5" who="Ville Herva" />
<person posts="2" size="5" who="Alex Davis" />
<person posts="2" size="5" who="dean gaudet" />
<person posts="2" size="5" who="Stefan Smietanowski" />
<person posts="2" size="5" who="&quot;Serge E. Hallyn&quot;" />
<person posts="2" size="5" who="&quot;Paul Rolland&quot;" />
<person posts="2" size="4" who="dan carpenter" />
<person posts="2" size="4" who="Neo Wee Teck" />
<person posts="2" size="4" who="Pavel Machek" />
<person posts="2" size="4" who="Matthias Krebs" />
<person posts="1" size="69" who="Rauno Tuul" />
<person posts="1" size="64" who="Matti =?ISO-8859-1?Q?L=E5ngvall?=" />
<person posts="1" size="40" who="Carlo" />
<person posts="1" size="38" who="Jaroslav Kysela" />
<person posts="1" size="37" who="Filip Van Raemdonck" />
<person posts="1" size="32" who="&quot;Jason Walker&quot;" />
<person posts="1" size="29" who="neel vanan" />
<person posts="1" size="26" who="Carlos Puchol" />
<person posts="1" size="24" who="Bjorn Helgaas" />
<person posts="1" size="23" who="Robin Holt" />
<person posts="1" size="21" who="Vojtech Pavlik" />
<person posts="1" size="19" who="Pavel Alexeev" />
<person posts="1" size="18" who="Carlos O'Donell" />
<person posts="1" size="17" who="Bart Samwel" />
<person posts="1" size="16" who="&quot;??&quot;" />
<person posts="1" size="13" who="Tim Connors" />
<person posts="1" size="12" who="Tonnerre Anklin" />
<person posts="1" size="12" who="Joost Witteveen" />
<person posts="1" size="11" who="raven" />
<person posts="1" size="11" who="john moser" />
<person posts="1" size="10" who="Jim Keniston" />
<person posts="1" size="10" who="Dylan Griffiths" />
<person posts="1" size="10" who="&quot;Lee&quot;" />
<person posts="1" size="9" who="=?ISO-8859-1?Q?Rapha=EBl_Rigo?=" />
<person posts="1" size="9" who="Tomas Martisius" />
<person posts="1" size="8" who="watermodem" />
<person posts="1" size="8" who="Oliver Teuber" />
<person posts="1" size="7" who="Carlo Scarfoglio" />
<person posts="1" size="7" who="Jamie Clark" />
<person posts="1" size="7" who="Jan Rychter" />
<person posts="1" size="7" who="&quot;Darren Dupre&quot;" />
<person posts="1" size="7" who="Oliver Hunt" />
<person posts="1" size="7" who="Alasdair G Kergon" />
<person posts="1" size="6" who="Martin Klaffenboeck" />
<person posts="1" size="6" who="Takayoshi Kochi" />
<person posts="1" size="6" who="Kevin Corry" />
<person posts="1" size="6" who="Wim Van Sebroeck" />
<person posts="1" size="5" who="Danny Brow" />
<person posts="1" size="5" who="&quot;Luck, Tony&quot;" />
<person posts="1" size="5" who="Thomas Backlund" />
<person posts="1" size="5" who="Tony Hoyle" />
<person posts="1" size="5" who="&quot;Brown, Len&quot;" />
<person posts="1" size="5" who="Max Valdez" />
<person posts="1" size="5" who="Glenn Wurster" />
<person posts="1" size="5" who="(gmack)" />
<person posts="1" size="5" who="&quot;Mike Black&quot;" />
<person posts="1" size="5" who="Scott Wood" />
<person posts="1" size="5" who="Tomas Konir" />
<person posts="1" size="5" who="Rahul Sawarkar" />
<person posts="1" size="4" who="&quot;Johan Ekenberg&quot;" />
<person posts="1" size="4" who="Shaya Potter" />
<person posts="1" size="4" who="Fernando Serboncini - Campo Geral" />
<person posts="1" size="4" who="Joshua Schmidlkofer" />
<person posts="1" size="4" who="Karol Kozimor" />
<person posts="1" size="4" who="Simon Kirby" />
<person posts="1" size="4" who="Harald Welte" />
<person posts="1" size="4" who="Steve Youngs" />
<person posts="1" size="4" who="Thomas Cataldo" />
<person posts="1" size="4" who="John Jasen" />
<person posts="1" size="4" who="&quot;Jani Vaarala&quot;" />
<person posts="1" size="4" who="Christoph Hellwig" />
<person posts="1" size="4" who="Gertjan van Wingerde" />
<person posts="1" size="4" who="Andy Lutomirski" />
<person posts="1" size="4" who="&quot;Thomas R. Sibley&quot;" />
<person posts="1" size="4" who="Gergely Tamas" />
<person posts="1" size="4" who="Vid Strpic" />
<person posts="1" size="4" who="(rene.rebe)" />
<person posts="1" size="4" who="&quot;Lev A. Melnikovsky&quot;" />
<person posts="1" size="4" who="&quot;Preston A. Elder&quot;" />
<person posts="1" size="4" who="age" />
<person posts="1" size="4" who="&quot;Michael J. Cohen&quot;" />
<person posts="1" size="4" who="=?iso-8859-1?q?moi=20toi?=" />
<person posts="1" size="4" who="Douglas Gilbert" />
<person posts="1" size="4" who="Kevin Fenzi" />
<person posts="1" size="4" who="cliff white" />
<person posts="1" size="4" who="Nanook" />
<person posts="1" size="4" who="&quot;Zeno R.R. Davatz&quot;" />
<person posts="1" size="4" who="(markw)" />
<person posts="1" size="4" who="Gordon Cormack" />
<person posts="1" size="4" who="Marco Roeland" />
<person posts="1" size="4" who="Samuel Flory" />
<person posts="1" size="4" who="Alex Belits" />
<person posts="1" size="4" who="Zan Lynx" />
<person posts="1" size="4" who="Karel Koster" />
<person posts="1" size="4" who="Ivan Ristic" />
<person posts="1" size="4" who=" (Florin Iucha)" />
<person posts="1" size="4" who="&quot;Chad Kitching&quot;" />
<person posts="1" size="4" who="Jimmie Mayfield" />
<person posts="1" size="3" who="Andrew McGregor" />
<person posts="1" size="3" who="William Park" />
<person posts="1" size="3" who="(arnaud.quette)" />
<person posts="1" size="3" who="Daniel Pittman" />
<person posts="1" size="3" who="Nate Lawson" />
<person posts="1" size="3" who="Tim Stadelmann" />
<person posts="1" size="3" who="(ima.sudonim)" />
<person posts="1" size="3" who="William Stearns" />
<person posts="1" size="3" who="&quot;James McMechan&quot;" />
<person posts="1" size="3" who="Tim Connors" />
<person posts="1" size="3" who="&quot;Zhu, Yi&quot;" />
<person posts="1" size="3" who="Hugang" />
<person posts="1" size="3" who="David Lang" />
<person posts="1" size="3" who="Bryan Whitehead" />
<person posts="1" size="3" who="(gijoe)" />
<person posts="1" size="3" who="Andreas Beckmann" />
<person posts="1" size="3" who="Peter Chubb" />
<person posts="1" size="3" who="Paulus Esterhazy" />
<person posts="1" size="3" who="Julien Oster" />
<person posts="1" size="3" who="Kjartan Maraas" />
<person posts="1" size="3" who="Chuck Lever" />
<person posts="1" size="3" who="(P)" />
<person posts="1" size="3" who="Tupshin Harper" />
<person posts="1" size="3" who="David Mosberger" />
<person posts="1" size="3" who="Ciaran McCreesh" />
<person posts="1" size="3" who="&quot;Cappa Consultants&quot;" />
<person posts="1" size="3" who="Dave Kleikamp" />
<person posts="1" size="3" who="Lenar =?ISO-8859-1?Q?L=F5hmus?=" />
<person posts="1" size="3" who="Shawn Willden" />
<person posts="1" size="3" who="Dan Yocum" />
<person posts="1" size="3" who="Con Kolivas" />
<person posts="1" size="3" who="Andries Brouwer" />
<person posts="1" size="3" who="Rask Ingemann Lambertsen" />
<person posts="1" size="3" who="&quot;Kevin P. Fleming&quot;" />
<person posts="1" size="3" who="Bob Hutchinson" />
<person posts="1" size="3" who="&quot;Michael D. Harnois&quot;" />
<person posts="1" size="3" who="Lutz Vieweg" />
<person posts="1" size="3" who="Loic Bernable" />
<person posts="1" size="3" who="&quot;Miquel van Smoorenburg&quot;" />
<person posts="1" size="3" who="Lincoln Dale" />
<person posts="1" size="3" who="Hank Leininger" />
<person posts="1" size="3" who="=?ISO-8859-15?Q?Mika_Penttil=E4?=" />
<person posts="1" size="3" who="Steve Lord" />
<person posts="1" size="3" who="Hui Huang" />
<person posts="1" size="3" who="Mario 'BitKoenig' Holbe" />
<person posts="1" size="3" who="Adam Kropelin" />
<person posts="1" size="3" who="Takashi Iwai" />
<person posts="1" size="3" who="Justin Cormack" />
<person posts="1" size="3" who="Lucio Maciel" />
<person posts="1" size="3" who="&quot;Kevin Krieser&quot;" />
<person posts="1" size="3" who="&quot;Martin Schaffner&quot;" />
<person posts="1" size="3" who="Harald Arnesen" />
<person posts="1" size="3" who="Albert Cahalan" />
<person posts="1" size="3" who="Mark Symonds" />
<person posts="1" size="3" who="&quot;Ian S. Nelson&quot;" />
<person posts="1" size="3" who="Ookhoi" />
<person posts="1" size="3" who="Yuri van Oers" />
<person posts="1" size="3" who="&quot;Martin Schaffner&quot;" />
<person posts="1" size="3" who="David Jez" />
<person posts="1" size="3" who="Patrick Mansfield" />
<person posts="1" size="3" who="David Dillow" />
<person posts="1" size="3" who="Ryan Reich" />
<person posts="1" size="3" who="Bob Chiodini" />
<person posts="1" size="3" who="Rogier Wolff" />
<person posts="1" size="3" who="=?koi8-r?Q?=22?=Andrey Borzenkov=?koi8-r?Q?=22=20?=" />
<person posts="1" size="3" who="Michal Jaegermann" />
<person posts="1" size="3" who="dual_bereta_r0x" />
<person posts="1" size="3" who="Norberto Bensa" />
<person posts="1" size="3" who="Voicu Liviu" />
<person posts="1" size="3" who="&quot;J. Ryan Earl&quot;" />
<person posts="1" size="3" who="Michael Heyse" />
<person posts="1" size="3" who="James Morris" />
<person posts="1" size="3" who="Rob Landley" />
<person posts="1" size="3" who="Samium Gromoff" />
<person posts="1" size="3" who="pZa1x" />
<person posts="1" size="2" who="&quot;NucleoDyne Systems Inc.&quot;" />
<person posts="1" size="2" who="Christian Borntraeger" />
<person posts="1" size="2" who="&quot;J.A. Magallon&quot;" />
<person posts="1" size="2" who="Chris Vine" />
<person posts="1" size="2" who="&quot;Amit S. Kale&quot;" />
<person posts="1" size="2" who="&quot;Bill Rugolsky Jr.&quot;" />
<person posts="1" size="2" who="Damien Sandras" />
<person posts="1" size="2" who="Aron Rubin" />
<person posts="1" size="2" who="coderman" />
<person posts="1" size="2" who="Jens Kubieziel" />
<person posts="1" size="2" who="Peter Berg Larsen" />
<person posts="1" size="2" who="Akinobu Mita" />
<person posts="1" size="2" who="Nuno Silva" />
<person posts="1" size="2" who="Thomas Winischhofer" />
<person posts="1" size="2" who="Jamie Clark" />
<person posts="1" size="2" who="Sebastian Kaps" />
<person posts="1" size="2" who="Frank v Waveren" />
<person posts="1" size="2" who="Troels Walsted Hansen" />
<person posts="1" size="2" who="Pat Erley" />
<person posts="1" size="2" who="Aaron Lehmann" />
<person posts="1" size="2" who="Jesper Juhl" />
<person posts="1" size="2" who="Oliver Feiler" />
<person posts="1" size="2" who="Arnaud Launay" />
<person posts="1" size="2" who="Tim Connors" />
<person posts="1" size="2" who="Jussi Laako" />
<person posts="1" size="2" who="Xavier Bestel" />
<person posts="1" size="2" who="Wichert Akkerman" />
<person posts="1" size="2" who="Duncan Sands" />
<person posts="1" size="2" who="&quot;David B. Stevens&quot;" />
<person posts="1" size="2" who="Joshua Schmidlkofer" />
<person posts="1" size="2" who="Andi Kleen" />
<person posts="1" size="2" who="Julien Oster" />
<person posts="1" size="2" who="Stefan Kaltenbrunner" />
<person posts="1" size="2" who="Krzysztof Halasa" />
<person posts="1" size="2" who="David Rees" />
<person posts="1" size="2" who="Ali Akcaagac" />
<person posts="1" size="2" who="Bernard Collins" />
<person posts="1" size="2" who="Tom Dickson" />
<person posts="1" size="2" who="Carl-Daniel Hailfinger" />
<person posts="1" size="2" who="Dennis Bliefernicht" />
<person posts="1" size="2" who="Arjan van Staalduijnen" />
<person posts="1" size="2" who="sean darcy" />
<person posts="1" size="2" who="&quot;san&quot;" />
<person posts="1" size="2" who="Francois Romieu" />
<person posts="1" size="2" who="Jan Dittmer" />
<person posts="1" size="2" who="&quot;Zoran Davidovac&quot;" />
<person posts="1" size="2" who="Chris Frey" />
<person posts="1" size="2" who=" (Ulrich Mensfeld)" />
<person posts="1" size="2" who="Guillermo Menguez Alvarez" />
<person posts="1" size="2" who="Ed Tomlinson" />
<person posts="1" size="2" who="Ralf Dreibrodt" />
<person posts="1" size="2" who="Herbert Xu" />
<person posts="1" size="2" who="Valient Gough" />
<person posts="1" size="2" who="Daniel Flinkmann" />
<person posts="1" size="2" who="&quot;Nathaniel W. Filardo&quot;" />
<person posts="1" size="2" who="&quot;Hettinger Tamas&quot;" />
<person posts="1" size="2" who="Szakacsits Szabolcs" />
<person posts="1" size="2" who="&quot;Michael McLagan&quot;" />
<person posts="1" size="2" who="Tomas Szepe" />
<person posts="1" size="2" who="Jeff Dike" />
<person posts="1" size="2" who="Grant Miner" />
<person posts="1" size="2" who="Alexander Koch" />
<person posts="1" size="2" who="Jacek Kawa" />
<person posts="1" size="2" who="weifei" />
<person posts="1" size="2" who="Kendrick Hamilton" />
<person posts="1" size="2" who="Nuno Ferreira" />
<person posts="1" size="2" who="Kallol Biswas" />
<person posts="1" size="2" who="Patrick Mochel" />
<person posts="1" size="2" who="walt" />
<person posts="1" size="2" who="&quot;jdow&quot;" />
<person posts="1" size="2" who="Zoltan NAGY" />
<person posts="1" size="2" who="Jing Xu" />
<person posts="1" size="2" who="Doug McNaught" />
<person posts="1" size="2" who="Bryan O'Sullivan" />
<person posts="1" size="2" who="Christopher Sawtell" />
<person posts="1" size="2" who="Rob Love" />
<person posts="1" size="2" who="&quot;Justin T. Gibbs&quot;" />
<person posts="1" size="2" who="chas williams" />
<person posts="1" size="2" who="Ricky Beam" />
<person posts="1" size="2" who="&quot;Rahsheen Porter Sr.&quot;" />
<person posts="1" size="2" who="Pete Zaitcev" />
<person posts="1" size="2" who="Matthieu Moy" />
<person posts="1" size="2" who=" (Jonathan Corbet)" />
<person posts="1" size="2" who="Bernd Eckenfels" />
<person posts="1" size="2" who="Jurgen Kramer" />
<person posts="1" size="2" who="hemp4fuel" />
<person posts="1" size="2" who="Felix von Leitner" />
<person posts="1" size="2" who="&quot;Daniel B.&quot;" />
<person posts="1" size="2" who="&quot;Gerard Dominguez&quot;" />
<person posts="1" size="2" who="James Lamanna" />
<person posts="1" size="2" who="&quot;Edith Jernigan&quot;" />
<person posts="1" size="2" who="Roman Zippel" />
<person posts="1" size="2" who="Yaroslav Klyukin" />
<person posts="1" size="2" who="Frederik Deweerdt" />
<person posts="1" size="2" who="&quot;Power-Netz \(Schwarz\)&quot;" />
<person posts="1" size="2" who="Sid Boyce" />
<person posts="1" size="2" who="Matt" />
<person posts="1" size="2" who="Bill Davidsen" />
<person posts="1" size="2" who="Marcello" />
<person posts="1" size="2" who="Pete Clements" />
<person posts="1" size="2" who="Judith Lebzelter" />
<person posts="1" size="2" who="&quot;Kai&quot;" />
<person posts="1" size="1" who="&quot;www.fuck.xxi.lt&quot;" />
<person posts="1" size="1" who="&quot;Galimberti, Gustavo&quot;" />
<person posts="1" size="1" who="(listen)" />

</stats>

<section
  title="Status Of 2.4; Some Discussion Of Interface Stability In All Kernels"
  subject="Linux 2.4 future"
  archive="http://www.google.com/groups?hl=en&amp;lr=lang_en&amp;ie=UTF-8&amp;safe=off&amp;selm=XXnH.43U.13%40gated-at.bofh.it&amp;prev=/groups%3Fas_ugroup%3Dlinux.kernel%26as_uauthors%3DMarcelo%2520Tosatti%26as_usubject%3DLinux%25202.4%2520future%26as_drbb%3Db%26as_mind%3D1%26as_minm%3DDec%26as_miny%3D2003%26as_maxd%3D1%26as_maxm%3DDec%26as_maxy%3D2003"
  posts="203"
  startdate="01 Dec 2003 06:25:23 -0800"
  enddate="06 Dec 2003 07:49:33 -0800"
>
<topic>Backward Compatibility</topic>
<topic>Binary-Only Modules</topic>
<topic>FS: XFS</topic>
<topic>FS: autofs</topic>
<topic>Networking</topic>
<topic>SMP</topic>

<p>In keeping with the discussions covered in <kcref subject="linux-2.4.23
released" startdate="28 Nov 2003 10:27:48 -0800"/> and <kcref subject="XFS for
2.4" startdate="30 Nov 2003 22:20:52 -0800"/>, Marcelo Tosatti announced:</p>

<quote who="Marcelo Tosatti">

<p>The intention of this email is to clarify my position on 2.4.x future.</p>

<p>2.6 is becoming more stable each day, and we will hopefully see a 2.6.0
release during this month or January.</p>

<p>Having that mentioned, I intend to:</p>

<p>

<ul>

<li>Fix pending problems which might required more intrusive modifications
during 2.4.24. New drivers will be accept during this period (for example,
Cyclades PC300 driver, input userlevel driver support, or other sane
driver which might come up).</li>

<li>From 2.4.25 on, fix only critical/security problems.</li>

</ul>

</p>

</quote>

<p>David S. Miller replied, <quote who="David S. Miller">I think this is fine,
2.4.x really needs to go into super-maintainence mode whilst 2.6.x is being
brought on stage.</quote></p>

<p>Ian Kent asked if his AutoFS4 patches stood a chance of getting into
the 2.4 tree. Christoph Hellwig asked what the patches were all about, and
remarked, <quote who="Christoph Hellwig">if they aren't in 2.6 yet I don't
think it makes sense trying to get them into 2.4 anymore at all.</quote>
Ian acknowledged this, and said, <quote who="Ian Kent">I have just finished
porting them to 2.6 and will be attempting to get the help of autofs list
inhabitants for initail testing in the next few days.</quote> Peter C. Norton
also clarified, <quote who="Peter C. Norton">Ian has lots of bugfixes and
and feature patches (like direct mounts) going to the autofs mailing list.
Autofs4 has always had stability issues in 2.4.x, and its been lacking
in features.  This makes myself and others run a bastard combination of
amd, autofs and editing /etc/fstab to get "automounter" features even
close to the solaris automounter.  If these can go into 2.4, which will be
"stable" and in use in lots of places for the next couple of years it could
help by encouraging the distros to get behind autofs4 (hint hint, redhat,
hint).</quote> Christoph replied that it was a bit late for this stuff to get
into 2.4; and <quote who="Christoph Hellwig">As for Red Hat: I'll bet the next
Red Hat product will be based on a 2.6 kernel, as is fedora as their public
beta testing community whizbang version.</quote> Arjan van de Ven echoed
this, saying to Peter, <quote who="Arjan van de Ven">I suspect you'll have
a really hard time finding ANY distro that still wants to actively develop
new products on a 2.4 codebase.</quote></p>

<p>Elsewhere, in a different train of thought, Haris Peco asked, <quote
who="Haris Peco">Is there linux-abi for 2.6 kernel?</quote> Christoph said,
he didn't think so, and Jan-Benedict Glaw also put in, <quote who="Jan-Benedict
Glaw">Nobody really cares about ABI (at least, not enough to keep one stable)
while there's a good API. That requires sources, though, but that's a good
thing...</quote> Linus Torvalds came in at this point, with:</p>

<quote who="Linus Torvalds">

<p>People care _deeply_ about the user-visible Linux ABI - I personally
think backwards compatibility is absolutely _the_ most important issue for
any kernel, and breaking user-land ABI's is simply not done.</p>

<p>Sometimes we tweak user-visible stuff (for example, removing truly obsolete
system calls), but even then we're very very careful. Like printing out warning
messages for several _years_ before actually removing the functionality.</p>

<p>The one exception tends to be "system management" ABI's, ie stuff that
normal programs don't use. So kernel updates do sometimes require new utilities
for doing things like firewall configuration, hardware setup (ethernet tools,
ifconfig etc), or - in the case of 2.6 - module loading and unloading. Even
that is frowned upon, and there has to be a good reason for it.</p>

<p>At times, we've modified semantics of existing system behaviour subtly:
either to conform to standards, or because of implementation issues. It
doesn't happen often, and if it is found to break existing applications it
is not done at all (and the thing is fixed by adding a new system call with
the proper semantics, and leaving the old one broken).</p>

<p>You are, however, correct when it comes to internal kernel interfaces: we
care not at all about ABI's, and even API's are fluid and are freely changed
if there is a real technical reason for it. But that is only true for the
internal kernel stuff (where source is obviously a requirement anyway).</p>

</quote>

<p>Jan-Benedict replied, <quote who="Jan-Benedict">Whenever The ABI Question
(TM) comes up, it seems to be about claiming a (binary compatible) interface -
mostly for modules. But I think it's widely accepted that there isn't much
work done to have these truly binary compatible (eg. UP/SMP spinlocks et
al.).</quote> Linus replied:</p>

<quote who="Linus Torvalds">

<p>Absolutely. It's not going to happen. I am _totally_ uninterested in
a stable ABI for kernel modules, and in fact I'm actively against even
_trying_. I want people to be very much aware of the fact that kernel
internals do change, and that this will continue.</p>

<p>There are no good excuses for binary modules. Some of them may be
technically legal (by virtue of not being derived works) and allowed,
but even when they are legal they are a major pain in the ass, and always
horribly buggy.</p>

<p>I occasionally get a few complaints from vendors over my non-interest
in even _trying_ to help binary modules. Tough. It's a two-way street: if
you don't help me, I don't help you. Binary-only modules do not help Linux,
quite the reverse. As such, we should have no incentives to help make them any
more common than they already are. Adn we do have a lot of dis-incentives.</p>

</quote>

</section>

<section
  title="Real-Time Kernel-Based Mutexes"
  subject="[RFC/PATCH] FUSYN Realtime &amp; Robust mutexes for Linux try 2"
  archive="http://www.google.com/groups?hl=en&amp;lr=lang_en&amp;ie=UTF-8&amp;safe=off&amp;selm=YB1D.6Od.1%40gated-at.bofh.it"
  posts="12"
  startdate="03 Dec 2003 00:51:09 -0800"
  enddate="06 Dec 2003 17:15:16 -0800"
>
<topic>Big O Notation</topic>
<topic>POSIX</topic>
<topic>Real-Time</topic>

<p>Inaky Perez-Gonzalez proposed, <quote who="Inaky Perez-Gonzalez">This code
proposes an implementation of kernel based mutexes, taking ideas from the
actual implementations using futexes (namely NPTL), intending to solve its
limitations (see doc) and adding some features, such as real-time behavior,
priority inheritance and protection, deadlock detection and robustness.</quote>
He added, <quote who="Inaky Perez-Gonzalez">We have a site at <a
href="http://developer.osdl.org/dev/robustmutexes">http://developer.osdl.org/dev/robustmutexes</a>
with references to all the releases, test code and NPTL modifications (rtnptl)
to use this code. As well, the patch is there in a single file, in case you
don't want to paste them manually.</quote> Jamie Lokier replied:</p>

<quote who="Jamie Lokier">

<p>Here's my first thoughts, on reading Documentation/fusyn.txt.</p>

<p>

<ul>

<li>Everything here can be implemented on top of regular futex, but
    that doesn't mean the implementation will be efficient or robust.
    (This is because, in general, any kind of futex/fuqueue/whatever
    implementation can be moved from kernel space to userspace, using
    the real kernel futexes to simulate the waitqueues and spinlocks
    that are called in futex.c).</li>

</ul>

</p>

</quote>

<p>Inakey replied:</p>

<quote who="Inaky Perez-Gonzalez">

<p>I thought that initially, and my first tries (last year?) went into
that direction, but there are many holes (unless I am wrong). For
example:</p>

<p>

<ul>

<li>[minor] avoidance of priority inversions: you cannot leave the
   lock unlocked while transferring ownership and race conditions
   trying to implement this.</li>

<li>priority inheritance/protection: hell on heels, you will have so
   many system calls into the kernel and race conditions that it is
   probably not worth it. Big surgery would be needed to
   implement the wait_cancel of a boosting thread. You need
   to be able to find who is owning what and follow a possibly long
   ownership/wait chain (more kernel) to boost (reprioritize) each
   owner until hitting the end. This implies having the privilege and
   the means to look it up.</li>

<li>robustness: you need the kernel help, at least to identify the dead
   guy, and for most applications that they want to use this for, it
   has to be snap quick. Maybe it could be made fast, but not as much
   as now (you'd have to query the vfulock, verify that nobody else is
   trying to initiate recovery -- this requires another lock, which
   requires robustness too, chicken and egg -- and then perform the
   recovery); a PITA, to summarize</li>

</ul>

</p>

</quote>

<p>Jamie also made a bunch of other points in his initial reply to Inaky's
proposal. He said, <quote who="Jamie Lokier">Priority inheritence is ok _when_
you want it. Sometimes if task A with high priority wants a resource which
is locked by task B with lower priority, that should be an error condition:
it can be dangerous to promote the priority of task B, if task B is not
safe to run at a high priority.</quote> Inaky replied, <quote who="Inaky
Perez-Gonzalez">That's why it is enabled only on request; it bothers me that
having it forces some things, like having to do wait_cancel from interrupt
contexts and stuff like that. Fortunately, chprio also requires that, so
serves as a justification for having it.  I still need to quantify the overall
effects of that, btw.</quote> Inaky also pointed out that it was really the
responsibility of the system designer to safely allow lock-sharing. He added,
<quote who="Inaky Perez-Gonzalez">I have requests from some vendors to extend
this behavior to even SCHED_OTHER tasks, so that a FIFO task could promote it
to FIFO. I personally shiver when thinking about this, but it makes sense in
some environments (some real time tasks doing important things and a normal
task doing low priority cleanups, for example)</quote>.</p>

<p>In his initial reply to Inaky's first post, Jamie also said, <quote
who="Jamie Lokier">The data structures and priority callbacks which are
used to implement priority inheritance, protection and highest-priority
wakeup are fine.  But highest-priority wakeup (at least) shouldn't be just
for fuqueues: it should be implemented at a lower level, directly in the
kernel's waitqueues.  Meaning: wake_up() should wake the highest priority
task, not the first one queued, if that is appropriate for the queue or
waker.</quote> Inaky replied:</p>

<quote who="Inaky Perez-Gonzalez">

<p>That was the first thing I thought of; however, it is not an easy task--for
example, now you have to allocate a central node that has to live during
the life of the waitqueue (unlike in futexes), and that didn't play too
well -- with the current code, unlike my previous attempt with rtfutexes,
it is not that much of a deal and could be done, but I don't know how much
of the interface I could emulate.</p>

<p>As well, supporting the priority change while waiting requires some
more work...</p>

<p>It is in my todo list to add some more bits to the fuqueue layer so it
can do everything waitqueues do with the priority based interface.</p>

<p>It'd be interesting to experiment in some subsystem by changing the usage
of waitqueues for fuqueues, see what happens.</p>

</quote>

<p>Jamie asked what the central node was for, that Inaky had mentioned in
the first paragraph of his reply, and Inaky explained:</p>

<quote who="Inaky Perez-Gonzalez">

<p>In futexes we have that each hash chain has all the waiters, in FIFO arrival
order, and we just wake as many as needed. In the fuqueues, this wake up has
to be by priority. We could walk that chain pedaling back and forth to wake
them up in the correct order, but that would be anything but O(1), and being
"real-time" like, or predictable, is one of the requirements.</p>

<p>So the wait list has a head, the fuqueue-&gt;wlist, and the waiters
are appended there in their correct position (so addition is O(N) now,
will change to O(1) IANF, and removal of the highest priority guy is O(1)--
take the guy in the head).</p>

<p>Now, on ufuqueues (the ones that are associated to user space addresses,
the true futex equivalent) that means you can't do the trick of the futex chain
lists, so you have on each chain a head per ufuqueue/user space address. That
ufuqueue cannot be declared on the stack of one of the waiters, as it would
disappear when it is woken up and might leave others dangling.</p>

<p>So we have to allocate it, add the waiters to it and deallocate it when
the wait list is empty. This is what complicates the whole thing and adds
the blob of code that is vl_locate() [the allocation and addition to the
list, checking for collisions when locks are dropped]. As the whole thing
is kind of expensive, we better cache it for a few seconds, as chances are
we will have some temporal locality (in fact, it happens, it improves the
performance a lot), so that leads to more code for the "garbage collector"
that cleans the hash chains of unused queue heads every now and then. All
this is what the vlocator code does.</p>

</quote>

<p>However, Scott Wood suggested:</p>

<quote who="Scott Wood">

<p>However, instead of allocating the memory on demand, you can keep a pool
of available queues.  Every time a task is created, allocate one and add it
to the queue; every time a task dies, retrieve one and free it.  Since a task
can only wait on one queue at a time, you won't run out of queues (unless
you want to implement some sort of wait for multiple objects; however, in
such a case you could allocate the extra queues on demand without affecting
the normal single-object case).</p>

<p>Thus, it would be a simple linked-list operation plus a spinlock to
acquire and release a queue whenever something blocks.  It would be slower
than the current waitqueue implementation, but not by much (and it could be
made configurable for those who want every last cycle and don't care about
real-time wait queues).</p>

<p>This would be beneficial for userspace usage as well, as blocking on a queue
would no longer be subject to a return value of -ENOMEM (which is generally
undesireable in what's supposed to be a predictable real-time application).</p>

</quote>

<p>He added, <quote who="Scott Wood">If the pool is kept as a stack, you
keep the cache benefits, as well as allowing re-use of the queue across
different locks.</quote> Inaky replied:</p>

<quote who="Inaky Perez-Gonzalez">

<p>I like the idea, specially because the guarantees, but I don't know
how accepted it will be:</p>

<p>

<ol>

<li>

<p>the wait queue is just the base type, fulock builds on top of it,
  so a fulock is bigger than a fuqueue. So, you would have to allocate
  on of each for each task for it to make sense (if some time we add
  rwlocks, something similar would happen).</p>

<p>  We could also say: ok, we split them, but then you'd have to allocate
  the extra stuff somewhere else and are back in square 1 (not to mention
  all the complications introduced for doing that).</p>

</li>

<li>Many tasks are not going to use locks in user space, so they will
  not need at all that associated queue/lock, thus the space would be
  wasted for every task that does not use them.</li>

<li>It'd slow down task creation time.</li>

</ol>

</p>

<p>It really comes up to be a balancing decision: are we willing to put up
with the wasted space (2) and (3) to get rid of the -ENOMEM problem?\</p>

<p>I think I will implement a configurable proof of concept see how it
works.</p>

<p>As a side note, the best thing for user space would be to call back
if it sees an -ENOMEM (something akin to -EAGAIN).</p>

<p>On the other side, we could somehow force a hi/lo watermarks in the
number of readily available fulocks/fuqueues in the kmem caches for
each.</p>

</quote>

<p>Way back in Jamie's original reply to Inaky's first post, Jamie asked,
<quote who="Jamie Lokier">Is there a method for passing the locked state to
another task?  Compare-and-swap old-pid -&gt; new-pid works when there isn't
any contention, but a kernel call is needed in any of the kernel-controlled
states.</quote> Inaky replied, <quote who="Inaky Perez-Gonzalez">That can be
done, because if you are in non-KCO mode (ie: pid), the kernel by definition
knows nil about the mutex, so just do the compare and swap in user space
and you are ready. No need to add any special code.</quote> Jamie said,
<quote who="Jamie Lokier">The question asks what to do in the KCO state.
I.e. when you want to transfer a locked state and there are waiters.</quote>
Inaky replied:</p>

<quote who="Inaky Perez-Gonzalez">

<p>Ah, ah, ah ... makes sense. Ok, so this is like an unlock operation but
"unlock to this guy". Well, same thing, but extended. You need to try it
first in user space, if that fails because it is KCO (locked and there are
waiters), then go to the kernel and ask it to transfer ownership in there.</p>

<p>Piece of cake, more or less, and can be done O(1) by checking
dest_task-&gt;fuqueue_wait. Why the interest for this? I am curious to see
what could it be used for.</p>

<p>I will give it a shot as soon as I have a minute (unless your question
was purely academic and plan no uses for it).</p>

</quote>

<p>Also in Jamie's initial reply to Inaky's first post of the thread,
Jamie said, <quote who="Jamie Lokier">It's very unpleasant that rwlocks
enter the kernel when there is more than one reader.  Hashed rwlocks can
be implemented in userspace to reduce this (readers take one rwlock from a
hashed set; writers take them all in order), but it isn't wonderful.</quote>
Inaky agreed with this assessment, and said he'd keep it in mind, though he
hadn't thought much about it at that time.</p>

<p>Also in Jamie's initial reply to Inaky's initial proposal, Jamie said,
<quote who="Jamie Lokier">For architectures which can't do compare-and-swap,
a system call which does the equivalent (i.e. disables preemption,
does compare-and-swap, enables preemption again) would be quite useful.
Not for maximum performance, but to allow architecture-independent locking
strategies to be written portably.</quote> Inaky replied, <quote who="Inaky
Perez-Gonzalez">But the minute you are doing a system call you are better off
calling directly the kernel for it to arbitrate the mutex in pure KCO mode.
I think the overhead saving is worth an #ifdef in the source code for the
lock operation...</quote> And Jamie said, <quote who="Jamie Lokier">If it is
as simple as just keeping the mutex in KCO mode all the time on archs which
don't have compare-and-swap, or those that do if an application doesn't have
explicit asm code for that arch, that would be very convenient.  I haven't
thought through whether keeping a mutex in KCO mode has this capability.
Perhaps you have and can state the answer?</quote> Inaky replied:</p>

<quote who="Inaky Perez-Gonzalez">

<p>First I should make a distinction that is causing way too much confusion,
one thing is KCO for the vfulock (telling the user that it has to go
to the kernel) and the other is using it always in KCO mode by passing a
yet-to-be-implemented-flag FULOCK_FL_KCO to the sys_ufulock_*() system calls
(so it skips all the ugly synchronization code).</p>

<p>This FULOCK_FL_KCO is needed for priority protection anyway, so it will
be there no matter what; thus, in arches without atomic compare-and-swap,
it becomes a matter of ops-I-don't-have-the-fast-path so I just call the
syscall with that bit set.</p>

</quote>

<p>Also in Jamie's long first reply to Inaky's initial post, Jamie said,
<quote who="Jamie Lokier">It's a huge patch.  A nice thing about futex.c is
that it's relatively small (your patch is 9 times larger).  The original futex
design was more complicated, and written specifically for mutexes.  Then it
was made simpler and I think smaller at the same time.  Perhaps putting some
of the RT priority capabilities directly into kernel waitqueues would help
with this.</quote> Inaky said:</p>

<quote who="Inaky Perez-Gonzalez">

<p>I agree with that, but think about the pieces. The only part that is
strictly equivalent to futexes is the ufuqueues, so that's ufuqueue.c,
fuqueue.c and vlocator.c. The splitting is necessary to allow parts and
pieces to be shared by the fulocks.</p>

<p>Asides from the comments, it adds the most complex/bloating part, the
priority-sorted thingie and chprio support vs not having the FUTEX_FD or
requeue support...it comes to be, more or less equivalent, considering all
the crap that has to be changed for the prioritization to work respecting
the incredibly stupid POSIX semantincs for mutex lifetimes.</p>

</quote>

<p>Jamie asked, <quote who="Jamie Lokier">Are there specified POSIX semantics
for prioritisation and mutex interaction?</quote> Inaky replied, <quote
who="Inaky Perez-Gonzalez">Yep, they state different things on all that,
and how you don't need to necessarily destroy non-shared mutexes (vs shared)
and a few more things that made my life a little bit more exciting...I think
I still need to tweak a few bits more on the priority inheritance stuff to get
it completely up to the spec, but it should be pretty good already.</quote></p>

<p>A few other interesting points were discussed, but this summary is already
too complex.</p>

</section>

<section
  title="Status Of Andrea's VM Contributions In 2.4"
  subject="2.4.23 includes Andrea's VM?"
  archive="http://www.google.com/groups?hl=en&amp;lr=lang_en&amp;ie=UTF-8&amp;safe=off&amp;selm=YGEc.2UB.15%40gated-at.bofh.it"
  posts="10"
  startdate="03 Dec 2003 06:51:36 -0800"
  enddate="06 Dec 2003 05:31:39 -0800"
>
<topic>Big Memory Support</topic>
<topic>Virtual Memory</topic>

<mention>Stephan von Krawczynski</mention>
<mention>Ian Soboroff</mention>
<mention>Bill Davidsen</mention>

<p>Ian Soboroff noticed that in the 2.4.23 ChangeLog, at least some of Andrea
Arcangeli's Virtual Memory Subsystem code had been merged. He asked for some
clarification on that, and Mike Fedyk replied, <quote who="Mike Fedyk">A good
amount of the VM was merged into 2.4.23-pre3, so the -aa patches against
pre6 should show you what is missing.</quote> Andrea Arcangeli also said
that the latest 2.4 kernels would probably run much better in some cases,
<quote who="Andrea Arcangeli">However I'd still recommend to use my tree,
the last two critical bits you need from my tree are inode-highmem and
related_bhs. Those two are still missing, and you probably need them with 12G.
I'm going to release a 2.4.23aa1 btw, that will be the last 2.4-aa.</quote>
Mike asked if Andrea would start releasing 2.6-aa branches, but there was
no reply.  Stephan von Krawczynski and Bill Davidsen took the opportunity
to thank Andrea for all his work on the VM subsystem.</p>

</section>

<section
  title="Filesystem Encryption And Compression"
  subject="partially encrypted filesystem"
  archive="http://www.google.com/groups?hl=en&amp;lr=lang_en&amp;ie=UTF-8&amp;safe=off&amp;selm=YMzS.7T2.21%40gated-at.bofh.it&amp;prev=/groups%3Fas_ugroup%3Dlinux.kernel%26as_uauthors%3DKallol%2520Biswas%26as_usubject%3Dpartially%2520encrypted%2520filesystem%26as_drbb%3Db%26as_mind%3D3%26as_minm%3DDec%26as_miny%3D2003%26as_maxd%3D3%26as_maxm%3DDec%26as_maxy%3D2003"
  posts="50"
  startdate="03 Dec 2003 13:07:56 -0800"
  enddate="09 Dec 2003 18:13:04 -0800"
>
<topic>BSD</topic>
<topic>Big O Notation</topic>
<topic>Compression</topic>
<topic>FS: ext2</topic>
<topic>Virtual Memory</topic>

<mention>Kallol Biswas</mention>
<mention>Joern Engel</mention>
<mention>Bill Davidsen</mention>

<p>Kallol Biswas wanted a way to have a filesystem store some data encrypted
and some in the clear; Richard B. Johnson said that this really should be
handled by the application, not the filesystem; and Bill Davidsen agreed. As
Richard put it, <quote who="Richard B. Johnson">The file-systems are a bunch
of inodes. Every time you want to read or write one, something has to decide
if it's encrypted and, if it is, how to encrypt or decrypt it. Even the length
of the required read or write becomes dependent upon the type of encryption
being used. Surely you don't want to use an algorithm where a N-byte string
gets encoded into a N-byte string because to do so gives away the length,
from which one can derive other aspects, resulting in discovering the true
content.  So, you need variable-length inodes --- what a mess. The result
would be one of the slowest file-systems you could devise.</quote></p>

<p>Elsewhere, Joern Engel suggested that it might be possible to add
optional encryption to an existing filesystem like JFFS2. But Linus Torvalds
replied:</p>

<quote who="Linus Torvalds">

<p>Encryption is not that easy to just tack on to most existing filesystems
for one simple reason: for performance (and memory footprint) reasons,
most of the filesystems out there are doing "IO in place". In other words,
they do IO directly into and directly from the page cache.</p>

<p>With an encrypted filesystem, you can't do that. Or rather: you can
do it if the filesystem is read-only, but you definitely CANNOT do it on
writing. For writing you have to marshall the output buffer somewhere else
(and quite frankly, it tends to become a lot easier if you can do that for
reading too).</p>

<p>And that in turn causes problems. You get all kinds of interesting deadlock
schenarios when write-out requires more memory in order to succeed. So you
need to get careful. Reading ends up being the much easier case (doesn't
have the same deadlock issues _and_ you could do it in-place anyway).</p>

<p>So encryption per se isn't hard. But adding the extra indirect buffer
layer _can_ be pretty nasty, and makes it nontrivial to retrofit later.</p>

<p>** NOTE NOTE NOTE **</p>

<p>If you don't need to mmap() the files, writing becomes much easier.
Because then you can make rules like "the page cache accesses always happen
with the page locked", and then the encryption layer can do the encryption
in-place.</p>

<p>So it is potentially much easier to make encrypted files a special case,
and disallow mmap on them, and also disallow concurrent read/write on encrypted
files. This may be acceptable for a lot of uses (most programs still work
without mmap - but you won't be able to encrypt demand-loaded binaries,
for example).</p>

</quote>

<p>Joern pointed out that some compressed filesystems handled all these
problems, and still provided read-write support. And Linus replied:</p>

<quote who="Linus Torvalds">

<p>Yes, compression and encryption are really the same thing from a fs
implementation standpoint - they just have different goals. So yes, any
compressed filesystem will largely have all the same issues.</p>

<p>And compression isn't very easy to tack on later either.</p>

<p>Encryption does have a few extra problems, simply because of the intent.
In a compressed filesystem it is ok to say "this information tends to be
small and hard to compress, so let's not" (for example, metadata). While in
an encrypted filesystem you shouldn't skip the "hard" pieces..</p>

<p>(Encrypted filesystems also have the key management issues, further
complicating the thing, but that complication tends to be at a higher
level).</p>

</quote>

<p>Joern replied that in this case, JFFS2 might be the best solution after
all; and Phillip Lougher replied, <quote who="Phillip Lougher">Considering
that Jffs2 is the only writeable compressed filesystem, yes.  What should
be borne in mind is compressed filesystems never expect the data after
compression to be bigger than the original data.  In the case where the
compressed data is bigger, the original data is used instead, which is hardy
ideal for an encrypted filesystem, and so more than a direct substitution of
compression function for encrypt function is needed - this is of course only
relevant if the encryption algorithm used could return more data...</quote>
Erez Zadok replied:</p>

<quote who="Erez Zadok">

<p>Part of our stackable f/s project (FiST) includes a Gzipfs
stackable compression f/s.  There was a paper on it in Usenix
2001 and there's code in the latest fistgen package.  See <a
href="http://www1.cs.columbia.edu/~ezk/research/fist/">http://www1.cs.columbia.edu/~ezk/research/fist/</a></p>

<p>Performance of Gzipfs is another matter, esp. for writes in the middle
of files. :-)</p>

</quote>

<p>A couple of posts later, he elaborated:</p>

<quote who="Erez Zadok">

<p>We compress each chunk separately; currently chunk==PAGE_CACHE_SIZE.
For each file foo we keep an index file foo.idx that records the offsets
in the main file of where you might find the decompressed data for page N.
Then we hook it up into the page read/write ops of the VFS.  It works great
for the most common file access patterns: small files, sequential/random
reads, and sequential writes.  But, it works poorly for random writes into
large files, b/c we have to decompress and re-compress the data past the
point of writing.  Our paper provides a lot of benchmarks results showing
performance and resulting space consumption under various scenarios.</p>

<p>We've got some ideas on how to improve performance for writes-in-the-middle,
but they may hurt performance for common cases.  Essentially we have to go
for some sort of O(log n)-like data structure, which'd make random writes
much better.  But since it may hurt performance for other access patterns,
we've been thinking about some way to support both modes and be able to
switch b/t the two modes on the fly (or at least let users "mark" a file as
one for which you'd expect a lot of random writes to happen).</p>

<p>If anyone has some comments or suggestions, we'd love to hear them.</p>

</quote>

<p>And Matthew Wilcox said:</p>

<quote who="Matthew Wilcox">

<p>Sure.  I've described it before on this list, but here goes:</p>

<p>What Acorn did for their RISCiX product (4.3BSD based, ran on an ARM box
in late 80s/early 90s) was compress each 32k page individually and write it
to a 1k block size filesystem (discs were around 50MB at the time, 1k was
the right size).  This left the file full of holes, and wasted on average
around 512/32k = 1/64 of the compression that could have been attained,
but it was very quick to seek to the right place.</p>

<p>Now 4k block size filesystems are the rule, and page size is also 4k so
you'd need to be much more clever to achieve the same effect.  Compressing
256k chunks at a time would give you the same wastage, but I don't think
Linux has very good support for filesystems that want to drop 64 pages into
the page cache when the VM/VFS only asked for one.</p>

<p>If it did, that would allow ext2/3 to grow block sizes beyond the current
4k limit on i386, which would be a good thing to do.  Or perhaps we just
need to bite the bullet and increase PAGE_CACHE_SIZE to something bigger,
like 64k.  People are going to want that on 32-bit systems soon anyway.</p>

</quote>

<p>Close by, Phillip said, <quote who="Phillip Lougher">FYI, Acorn's scheme
was described in "Compressed Executables: An Exercise in Thinking Small"
by Mark Taunton, in the Usenix Spring '91 conference, it doesn't seem to be
online, but a search on google groups for "group:comp.unix.internals taunton
compressed executables" brings up a description.  I used to work with Mark
Taunton at Acorn.</quote></p>

<p>Erez replied to Matthew, <quote who="Erez Zadok">Thanks for the info,
Matthew.  Yes, clearly a scheme that keeps some "holes" in compressed files
can help; one of our ideas was to leave sparse holes every N blocks, exactly
for this kind of expansion, and to update the index file's format to record
where the spaces are (so we can efficiently calculate how many holes we need
to consume upon a new write).</quote> And Matthew said, <quote who="Matthew
Wilcox">But the genius is that you don't need to calculate anything.  If the
data block turns out to be incompressible (those damn .tar.bz2s!), you just
write the block in-place.  If it is compressible, you write as much into
that block's entry as you need and leave a gap.  The underlying file system
doesn't write any data there.  There's no need for an index file -- you know
exactly where to start reading each block.</quote> Phillip replied:</p>

<quote who="Phillip Lougher">

<p>Of course this is all being done at the file level, which relies on
proper support of holes in the underlying filesystem (which Acorn's BSD FFS
filesystem did).  FiST's scheme is much more how it would be implemented
without hole support, where you *have* to pack the data, otherwise the
"unused" space would physically consume disk blocks. In this case an index
to find the start of each compressed block is essential.</p>

<p>I'm guessing that FiST lacks support for holes or data insertion in the
filesystem model, which explains why on writing to the middle of a file,
the entire file from that point has to be re-written.</p>

<p>Of course, all this is at the logical file level, and ignores the
physical blocks on disk.  All filesystems assume physical data blocks can
be updated in place.  With compression it is possible a new physical block
has to be found, especially if blocks are highly packed and not aligned to
block boundaries.  I expect this is at least partially why JFFS2 is a log
structured filesystem.</p>

</quote>

<p>David Woodhouse replied:</p>

<quote who="David Woodhouse">

<p>Not really. JFFS2 is a log structured file system because it's designed
to work on _flash_, not on block devices. You have an eraseblock size of
typically 64KiB, you can clear bits in that 'block' all you like till they're
all gone or you're bored, then you have to erase it back to all 0xFF again
and start over.</p>

<p>Even if you were going to admit to having a block size of 64KiB to the
layers above you, you just can't _do_ atomic replacement of blocks, which
is required for normal file systems to operate correctly.</p>

<p>These characteristics of flash have often been dealt with by implementing
a 'translation layer' -- a kind of pseudo-filesystem -- which pretends to
be a block device with the normal 512-byte atomic-overwrite behaviour. You
then use a traditional file system on top of that emulated block device.</p>

<p>JFFS2 was designed to avoid that inefficient extra layer, and work directly
on the flash. Since overwriting stuff in-place is so difficult, or requires a
whole new translation layer to map 'logical' addresses to physical addresses,
it was decided just to ditch the idea that physical locality actually means
_anything_.</p>

<p>Given that design, compression just dropped into place; it was trivial.</p>

</quote>

</section>

<section
  title="Status Of Storing .config Data In Compiled Kernels"
  subject="Where'd the .config go?"
  archive="http://www.google.com/groups?hl=en&amp;lr=lang_en&amp;ie=UTF-8&amp;safe=off&amp;selm=Z3AH-Qw-7%40gated-at.bofh.it"
  posts="8"
  startdate="04 Dec 2003 07:18:52 -0800"
  enddate="05 Dec 2003 08:27:27 -0800"
>

<mention>Robert L. Harris</mention>

<p>Robert L. Harris noticed that the option to save the .config data
within the compiled kernel was not present in 2.4.23-bk3; he asked if
the feature had been removed. Randy Dunlap replied, <quote who="Randy
Dunlap">It's never been merged in 2.4.x.  Marcelo didn't want it.
It's in 2.6.x. There's a 2.4.22-pre patch in this dir that you can try: <a
href="http://www.xenotime.net/linux/ikconfig/">http://www.xenotime.net/linux/ikconfig/</a></quote>
Lucio Maciel suggested including the feature in 2.4, but Randy said, <quote
who="Randy Dunlap">It's Marcelo's</quote> [Tossatti] <quote who="Randy
Dunlap">decision and he's trying to reduce 2.4.x patches.</quote></p>

</section>

<section
  title="Status Of OOM Killer In 2.4"
  subject="oom killer in 2.4.23"
  archive="http://www.google.com/groups?hl=en&amp;lr=lang_en&amp;ie=UTF-8&amp;safe=off&amp;selm=Z4n8-2z1-21%40gated-at.bofh.it"
  posts="19"
  startdate="04 Dec 2003 08:12:20 -0800"
  enddate="09 Dec 2003 10:50:03 -0800"
>
<topic>Forward Port</topic>
<topic>OOM Killer</topic>
<topic>Virtual Memory</topic>

<mention>Maciej Zenczykowski</mention>

<p>Peter Bergmann noticed that the out-of-memory (OOM) killer had been removed
from 2.4.23; and said the results were really bad. Maciej Zenczykowski also
suggested putting it back in, though perhaps making it a configuration option.
Guillermo Menguez Alvarez pointed out:</p>

<quote who="Guillermo Menguez Alvarez">

<p>As I see in the ChangeLog:</p>

<p>aa VM merge: page reclaiming logic changes: Kills oom killer</p>

<p>OOM Killer has been removed due to AA VM changes, so maybe it can't be
cleanly enabled again.</p>

</quote>

<p>Andrea Arcangeli said:</p>

<quote who="Andrea Arcangeli">

<p>it can be re-enabled without too much pain if you can accept the desktop
behaviour of 2.4.22 and previous not suitable for servers.</p>

<p>the oom killer had deadlocks and it was relaying on very inaccurate
accounting, so it had a number of corner cases were it was killing tasks by
mistakes (it's fooled by shm/mlock/noswap etc..), read also the bugreports
for 2.4.22 with tasks being killed because there was no swap in the box (or
just try to run your machine w/o swap, swap is not a must, it's a wish).
Fixing those in 2.4 sounds too complicated, and now it's too late to even
hope to make a proper oom killer for 2.4.</p>

<p>For the record 2.2 was capable of checking iopl to defer a few times the
killing of the X server, that wasn't forward ported to 2.4. For 2.6 we can
do something better than all the past oom killers at least. 2.6 gets fooled
by mlock too btw, ranom kill tasks etc.. so it's not much better than 2.4.22
was in oom killing respect.</p>

</quote>

<p>Elsewhere, Andrea also said:</p>

<quote who="Andrea Arcangeli">

<p>it's that simple to reenable it in 2.4.22 status, so if you're ok to
deadlock. 2.4.23 can't deadlock, it can live lock if you're unlucky with
timings yes (think if you add 32G of swap and your ram runs at 1k/sec
instead of 1G/sec), but not deadlock and it won't random kill tasks even if
it shouldn't to.  deadlock is a bug, killing task despite there's ram free
is a bug, livelock is something you can avoid by dropping all swap.  if you
drop all swap with 2.4.22 it'll go nuts killing tasks (see the bugreports).</p>

<p>Since doing it right wasn't possible in 2.4, I dropped it years ago,
-aa users are w/o an oom killer for years and I never heard a single
complain. somebody asked why yes, but they were happy afterwards. I don't
think I asked Marcelo to merge it, I explained why I dropped it, people sent
him bugreports about the oom killer going nuts, and he agreed my solution
was the best short term w/o adding lots of effort to make the oom killer
right. Note the oom killer goes nuts in 2.6 too, nobody did it right yet,
that's why I don't think it's a 2.4 issue.</p>

<p>Marcelo asked me to to make it configurable at runtime so you could go
in the deadlock prone stautus of 2.4.22 on demand, but I'm not going to add
more features to 2.4 today unless they're blocker bugs (even if that would
be simple to implement), actually it's not even my choice so don't ask me
for that sorry.</p>

</quote>

</section>

<section
  title="Patents Affecting FAT Support"
  subject="Large-FAT32-Filesystem Bug"
  archive="http://www.google.com/groups?hl=en&amp;lr=lang_en&amp;ie=UTF-8&amp;safe=off&amp;selm=ZkUU-dZ-13%40gated-at.bofh.it"
  posts="17"
  startdate="05 Dec 2003 01:52:31 -0800"
  enddate="08 Dec 2003 08:19:17 -0800"
>
<topic>FS: FAT</topic>
<topic>FS: VFAT</topic>
<topic>Microsoft</topic>
<topic>Patents</topic>

<p>Torsten Scheck reported a problem with the VFAT filesystem,
but Joanne Dow replied, <quote who="Joanne Dow">This all may be
moot. Microsoft is about to charge a royalty for use of the FAT file system. <a
href="http://www.microsoft.com/mscorp/ip/tech/fat.asp">http://www.microsoft.com/mscorp/ip/tech/fat.asp</a>
Software patents are the death of innovation and competition.</quote>
Helge Hafting said, <quote who="Helge Hafting">They claim some patents,
but aren't FAT so old that they have expired?</quote> Tomasz Torcz replied,
<quote who="Tomasz Torcz">Patents for storing long names of files (which
Microsoft is charging for) are from 1995 or something.</quote></p>

</section>

<section
  title="Hand-Off Of 2.6 To Andrew Still In Progress"
  subject="[BK PATCHES] libata fixes"
  archive="http://www.google.com/groups?hl=en&amp;lr=lang_en&amp;ie=UTF-8&amp;safe=off&amp;selm=PFec.3Of.5%40gated-at.bofh.it"
  posts="3"
  startdate="05 Dec 2003 10:16:43 -0800"
  enddate="05 Dec 2003 10:47:19 -0800"
>

<mention>Jeff Garzik</mention>

<p>Jeff Garzik posted a few fixes, and Linus Torvalds said, <quote who="Linus
Torvalds">Right now, I'm accepting one-liners that I think are "obvious"
and also "very important" (ie fixes for oopses that anybody can trigger,
rather than for example updates to one particular driver). So it sounds
like I might accept _one_ of these.</quote> He added, <quote who="Linus
Torvalds">Andrew is still off, and he can make a decision independently,
but right now I'm not going to apply anything bigger.</quote></p>

</section>

<section
  title="Status Of XFS In 2.4"
  subject="XFS merged in 2.4"
  archive="http://www.google.com/groups?hl=en&amp;lr=lang_en&amp;ie=UTF-8&amp;safe=off&amp;selm=10rUl-75L-23%40gated-at.bofh.it"
  posts="6"
  startdate="08 Dec 2003 03:22:16 -0800"
  enddate="08 Dec 2003 21:04:37 -0800"
>
<topic>FS: XFS</topic>

<mention>Dan Yocum</mention>

<p>Marcelo Tosatti said, <quote who="Marcelo Tosatti">Christoph reviewed XFS
patch which changed generic code, and it was stripped down later to a set
of changes which dont modify the code behaviour (except for a few bugfixes
which should have been included separately anyway) and are pretty obvious.
So its that has been merged, along with fs/xfs/.</quote> Dan Yocum thanked
him heartily for this, and folks were generally happy.</p>

</section>

<section
  title="kgdb 1.7 Released"
  subject="kgdb 1.7"
  archive="http://www.google.com/groups?hl=en&amp;lr=lang_en&amp;ie=UTF-8&amp;safe=off&amp;selm=10LzB-3aD-3%40gated-at.bofh.it"
  posts="1"
  startdate="09 Dec 2003 00:30:45 -0800"
>

<p>Amit S. Kale said:</p>

<quote who="Amit S. Kale">

<p>I have integrated some of the several enhancements
submitted by TimeSys Corporation into mainline kgdb at <a
href="http://kgdb.sourceforge.net/">http://kgdb.sourceforge.net/</a> The kgdb
version containing these features is 1.7. It's available for kernel 2.4.23.
Here is a brief description of the enhancements.</p>

<p>

<ol>

<li>Hasslefree gdb detach reconnect: You can now detach gdb from a kgdb stub
by using gdb "detach" command.  Reconnection later is as simple as typing
"target remote" command from gdb.</li>

<li>Restructured source files: Several kgdb source files have been restructured
to separate architecture dependent and independent code into respective
directories. It's a move towards making unification of kgdb sourcecode from
different architectures.</li>

</ol>

</p>

</quote>

</section>

<section
  title="Linux 2.6 Code Freeze In Full Effect"
  subject="[PATCH 2.4.23, 2.6.0-test11] fix d_type in readdir in isofs"
  archive="http://www.google.com/groups?hl=en&amp;lr=lang_en&amp;ie=UTF-8&amp;safe=off&amp;selm=10MP8-6lQ-15%40gated-at.bofh.it"
  posts="4"
  startdate="09 Dec 2003 01:47:32 -0800"
  enddate="09 Dec 2003 08:28:18 -0800"
>
<topic>Code Freeze</topic>

<mention>Domen Puncer</mention>

<p>Domen Puncer posted a fix for ISOFS, and Linus Torvalds replied, <quote
who="Linus Torvalds">Looks ok, but I can't convince myself to apply this
at this point: there's just no way I can call this a major stability fix
;). Can somebody keep this around for later?</quote></p>

</section>

<section
  title="Post Halloween Document New Location"
  subject="post halloween document moved.."
  archive="http://www.google.com/groups?hl=en&amp;lr=lang_en&amp;ie=UTF-8&amp;safe=off&amp;selm=10SUw-44s-3%40gated-at.bofh.it"
  posts="1"
  startdate="09 Dec 2003 08:06:02 -0800"
>

<p>Dave Jones said, <quote who="Dave Jones">The box hosting
www.codemonkey.org.uk died dramatically recently, resulting in the post
halloween 2.6 document being offline.  I've had a few requests for me
to put this someplace else whilst I get things fixed up, so for the time
being, you can find the last version I was able to find in backups at <a
href="http://www.linux.org.uk/~davej/docs/">http://www.linux.org.uk/~davej/docs/</a></quote></p>

</section>

<section
  title="Software Suspend 2.0rc3 For 2.4 And 2.6"
  subject="Announce: Software Suspend 2.0rc3 for 2.4 and 2.6."
  archive="http://www.google.com/groups?hl=en&amp;lr=lang_en&amp;ie=UTF-8&amp;safe=off&amp;selm=1149d-SE-7%40gated-at.bofh.it"
  posts="3"
  startdate="09 Dec 2003 20:22:54 -0800"
  enddate="11 Dec 2003 13:07:36 -0800"
>
<topic>Compression</topic>
<topic>FS: NFS</topic>
<topic>FS: sysfs</topic>
<topic>SMP</topic>
<topic>Software Suspend</topic>

<p>Nigel Cunningham announced:</p>

<quote who="Nigel Cunningham">

<p>This is to announce 2.0-rc3, now being uploaded to swsusp.sf.net.</p>

<p>A number of small but significant user-visible changes have been made
with this release, so please read these notes carefully.</p>

<p>

<ol>

<li>

<p>New format. There is now one 'core' patch which should be applied
regardless of your kernel version. In addition to the core patch, a
version-specific patch should be applied. These are available for both
2.4 and 2.6 series kernels. Core and version-specific patches should be
able to be updated independently.</p>

<p>PARTICULARLY IN THE CASE OF 2.6, THE VERSION SPECIFIC PATCH SHOULD BE
APPLIED FIRST. Otherwise, rejects will occur.</p>

</li>

<li>

<p>Changed kernel command line parameters. Instead of resume=,
resume_block= and resume_blocksize=, there is now a single resume2=
command line parameter. Note that that's RESUME2, not RESUME. The format
for this parameter is:</p>

<p>resume2=[writer]:[writer-specific-parameters]</p>

<p>At the moment, there is only one method of storing images - the
swapwriter. It is envisaged, that NFS support will be implemented
sometime in the future. (After I do the work of merging with Patrick).
For now, then, you will want to replace</p>

<p>resume=/dev/hda1 resume_block=0x560 resume_blocksize=1024</p>

<p>with</p>

<p>resume2=swap:/dev/hda1:0x560@1024</p>

<p>Later, you'll hopefully end up being able to have<br />
resume2=nfs:192.168.1.1/images/laptop.</p>

</li>

<li>

<p>/proc/sys/kernel/swsusp is now deprecated. It is still in this
version, but I'd appreciate it if scripts could be changed to use the
new /proc/swsusp/all_settings entry instead. The functionality is
exactly the same. Only the location has changed.</p>

<p>In addition, a ton of user-invisible changes have been made. This
accounts for the size of the patch. A new internal API implements two
new kinds of 'plugins', designed to make adding new methods of
transforming the data to be stored ('transformers') and saving the data
('writers') easier to implement. This has allowed me to separate out the
swap specific code and the compression code as part of the big cleanup
I've also done. The /proc code has also been enhanced, so that plugins
can dynamically register new entries. This will also form a foundation
for kobject support in the 2.6 kernel. (That is to say, 2.6 swsusp will
soon stop using proc, and will use sysfs instead).</p>

</li>

<li>Compatibility with other 2.6 implementations.</li>

</ol>

</p>

<p>This version should play nicely with the existing software suspend
implementations in the 2.6 kernel. Patrick's pmdisk implementation can be
activated as always using the sysfs interface, and Pavel's using echo 4 &gt;
/proc/acpi/sleep. This patch does replace the freezer implementation those
versions use, and Pavel's suspend will initialise but not use the nice
display. Apart from these minor changes, no differences should be seen.</p>

<p>For those who simply with to upgrade from rc2, an incremental patch is
also available from Sourceforge. I've put it there rather than attaching it
because of its size.</p>

<p>Apart from the kobject changes mentioned above, this should be the last
set of big changes to the code base. Unless something has slipped my mind,
I believe I've just about implemented all the functionality we need. From
now on, then, I'll only be looking to update/improve the documentation and
clean and further document the code, to implement kobject support and perhaps
also SMP support (which should be a minor changeset).</p>

</quote>

</section>

<section
  title="XFS Updates For 2.4"
  subject="Announce: XFS split patches for 2.4.24-pre1"
  archive="http://www.google.com/groups?hl=en&amp;lr=lang_en&amp;ie=UTF-8&amp;safe=off&amp;selm=11JvT-3lH-9%40gated-at.bofh.it"
  posts="1"
  startdate="11 Dec 2003 16:31:46 -0800"
>
<topic>Access Control Lists</topic>
<topic>FS: XFS</topic>

<p>Keith Owens said:</p>

<quote who="Keith Owens">

<p><a
href="ftp://oss.sgi.com/projects/xfs/download/patches/2.4.24-pre1">ftp://oss.sgi.com/projects/xfs/download/patches/2.4.24-pre1</a>.</p>

<p>2.4.24-pre1 now contains the bulk of the XFS code.  These split patches
only contain XFS updates from 2.4.24-pre1, plus add on code such as ACL,
DMAPI and KDB.  If you do not need those features and you are not seeing any
bugs in the base 2.4.24-pre1 XFS code then you do not need to apply any of
these patches.</p>

<p>Read the README in each directory very carefully, the split patch format
has changed over a few kernel releases.  Any questions that are covered by
the README will be ignored.  There is even a 2.4.24/README for the terminally
impatient :).</p>

</quote>

</section>

</kc>

