<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="43" date="15 Nov 1999 00:00:00 -0800" />

<intro>

<p>This week I'd like to highlight a new study being conducted on the Linux
development process. You can find out all about it at <a
href="http://www.psychologie.uni-kiel.de/linux-study/">http://www.psychologie.uni-kiel.de/linux-study/</a>.
Essentially their plan consists first of developing a questionnaire via
group participation in a mailing list; next, presenting the questionnaire on
the internet so people can write in their answers; and finally, making the
raw data obtained and their own findings available to the public.</p>

<p>In some ways this experiment itself is an Open Source project, so the
scientists may find themselves filling out their own questionnaire. I hope
they preserve the mailing list archives.</p>

<p>I suppose I should say something about the Microsoft verdict, but it's a
little noisy here because of all the popping champaign corks. Hey guys! Hold
it down! Tom, take that lampshade off your head!</p>

<p>Can't take them anywhere. ;-)</p>

<p>Oh yeah, Microsoft. Well, it's been a tremendous break for Linux that MS has
had to restrict itself to largely conventional warfare all this time. Who
knows what (metaphorical) busses might have been lurking in the Transmeta
parking lot on a dark and stormy night if they'd had a free hand? And now
that MS will be caught up in appeals for the next few years or more, the
future of Linux looks very bright.</p>

<p>Which is not to say there are no obstacles to be overcome. In the economic
world, as more and more Linux companies start gaining power, competition
between some of them will undoubtedly get ugly. Hopefully the best of them
will strive to remember the ideals that made Linux and Open Source possible,
and will emulate those ideals both in their dealings with the community and
within their own corporate structure as well.</p>

<p>In the technical world as well there is much to be done. The craze over the
Linux graphical desktop continues to make Linux a viable home system; at the
same time Linux desktops remain embryonic in, among other things, the area
of word processing and desktop publishing. Wine and VMWare have managed to
cover up this problem to some extent, but they still can't improve the
quality of the Windows packages they allow us to run. Microsoft Office will
always be terribly bloated, buggy, susceptible to macro viruses, and a slave
to a binary file format designed specifically to be incompatible with
competing software. I look forward to a day when Wine, VMWare, and DOSEMU
will merely be cute toys, as the TRS-80 emulator is today. For now, however,
we are still dependant upon them for some of the larger apps.</p>

<p>The kernel as well is of course in a constant state of development, but
there are perennial issues that keep coming up. Kernel code is still not
fully compatible with the latest C compilers, and Linus Torvalds still
recommends a compiler that is years old by now (GCC 2.7.2). The kernel
source is gradually being updated for more recent compilers, but for now the
problem remains. In addition, as we move closer to a new stable series, the
last stable series still has not fully stablized. In particular, a file
corruption bug has been biting people for quite a while now, and seems no
closer to being found than when it was first reported, in spite of
determined hunting by big-time hackers like Alan Cox.</p>

<p>In spite of these and other problems, there is much to rejoice at, not least
of which is everyone's ability to openly discuss the things that still need
work. Unlike Microsoft and other members of the competitive software
industry, we don't have to put a rosy face on everything. We don't have to
say, "Linux is perfect," and we don't have to say, "Death to FreeBSD. Death
to the Hurd." We can acknowledge the problems, and we can affirm the
alternatives. And of course, we can continue to experience uptimes measured
in months.</p>

</intro>

<stats posts="1038" size="3866" contrib="375" multiples="168" lastweek="136">

<person posts="48" size="127" who="Alan Cox " />
<person posts="35" size="137" who="&quot;Jeff V. Merkey&quot; " />
<person posts="29" size="118" who="Jamie Lokier " />
<person posts="28" size="94" who="Jes Sorensen " />
<person posts="26" size="83" who="Jeff Garzik " />
<person posts="22" size="99" who="Alexander Viro " />
<person posts="22" size="69" who="&quot;Stephen C. Tweedie&quot; " />
<person posts="17" size="54" who="Andrea Arcangeli " />
<person posts="15" size="40" who="Dan Hollis " />
<person posts="14" size="47" who="Pavel Machek " />
<person posts="14" size="41" who="Tigran Aivazian " />
<person posts="13" size="54" who="Bret Indrelee " />
<person posts="13" size="48" who="Ingo Molnar " />
<person posts="13" size="40" who="Peter Samuelson " />
<person posts="12" size="42" who="&quot;Theodore Y. Ts'o&quot; " />
<person posts="11" size="41" who="Gerard Roudier " />
<person posts="10" size="33" who="Trond Myklebust " />
<person posts="9" size="39" who="" />
<person posts="9" size="29" who="Martin Mares " />
<person posts="8" size="33" who="Robert Dinse " />
<person posts="8" size="31" who="&quot;Richard B. Johnson&quot; " />
<person posts="7" size="35" who="Jens Benecke " />
<person posts="7" size="28" who="&quot;David Schwartz&quot; " />
<person posts="7" size="22" who="Jens Axboe " />
<person posts="6" size="27" who="&quot;Mike A. Harris&quot; " />
<person posts="6" size="21" who="dony " />
<person posts="6" size="19" who="Bernard Wei " />
<person posts="6" size="19" who="Rik van Riel " />
<person posts="6" size="19" who="Manfred Spraul " />
<person posts="6" size="19" who="Mikulas Patocka " />
<person posts="6" size="18" who="Ralf Baechle " />
<person posts="6" size="17" who="Richard Gooch " />
<person posts="5" size="26" who="Luca Montecchiani " />
<person posts="5" size="24" who=" (Rogier Wolff)" />
<person posts="5" size="23" who="&quot;Theodore Y. Ts'o&quot; " />
<person posts="5" size="20" who="Roman Zippel " />
<person posts="5" size="19" who="Andre Hedrick " />
<person posts="5" size="19" who=" (Linus Torvalds)" />
<person posts="5" size="18" who="Peter Steiner " />
<person posts="5" size="18" who="Matthew Wilcox " />
<person posts="5" size="18" who=" (V. Ganesh)" />
<person posts="5" size="17" who="&quot;Dunlap, Randy&quot; " />
<person posts="5" size="16" who="Horst von Brand " />
<person posts="5" size="15" who="Horst von Brand " />
<person posts="5" size="15" who="Jeremy Fitzhardinge " />
<person posts="5" size="14" who="Matti Aarnio " />
<person posts="5" size="13" who="Dale Amon " />
<person posts="4" size="58" who="Ani Joshi " />
<person posts="4" size="23" who="Andrzej Krzysztofowicz " />
<person posts="4" size="19" who="Chuck Phillips " />
<person posts="4" size="17" who="" />
<person posts="4" size="16" who=" (Erik Mouw)" />
<person posts="4" size="16" who="Linus Torvalds " />
<person posts="4" size="15" who=" (H. Peter Anvin)" />
<person posts="4" size="15" who="&quot;Brandon S. Allbery KF8NH&quot; " />
<person posts="4" size="13" who="David Weinehall " />
<person posts="4" size="13" who="David Woodhouse " />
<person posts="4" size="13" who="Jakub Jelinek " />
<person posts="4" size="12" who="&quot;Tom Livingston&quot; " />
<person posts="4" size="12" who="&quot;Jones D (ISaCS)&quot; " />
<person posts="4" size="11" who="&quot;Biondi, Philippe&quot; " />
<person posts="4" size="11" who=" (Bob_Tracy)" />
<person posts="4" size="11" who="Tim Waugh " />
<person posts="4" size="10" who="Tonglu Yi " />
<person posts="4" size="10" who="Lee Rhodes " />
<person posts="4" size="9" who=" (Guest section DW)" />
<person posts="4" size="9" who="Josef =?iso-8859-1?Q?H=F6=F6k?= " />
<person posts="4" size="9" who="&quot;Garst R. Reese&quot; " />
<person posts="3" size="15" who="Keith Owens " />
<person posts="3" size="13" who="Rick Hohensee " />
<person posts="3" size="13" who="Mike Coleman " />
<person posts="3" size="13" who="Brad Proctor " />
<person posts="3" size="12" who="Gadi Oxman " />
<person posts="3" size="12" who="Russell King " />
<person posts="3" size="12" who="Andreas Bombe " />
<person posts="3" size="11" who="Patrick Lerda " />
<person posts="3" size="10" who="Anton Blanchard " />
<person posts="3" size="10" who=" (Patrick J. LoPresti)" />
<person posts="3" size="10" who="Christoph Rohland " />
<person posts="3" size="10" who="Adrian Cox " />
<person posts="3" size="10" who="" />
<person posts="3" size="10" who="Greg Stark " />
<person posts="3" size="9" who="" />
<person posts="3" size="9" who="Linux Lists " />
<person posts="3" size="9" who="Brian Macy " />
<person posts="3" size="9" who="Stephen Frost " />
<person posts="3" size="8" who="Shawn Leas " />
<person posts="3" size="8" who="&quot;Louis J. LaBash&quot; " />
<person posts="3" size="8" who="Robert Forsman " />
<person posts="3" size="8" who="Orin Eman " />
<person posts="3" size="8" who="Eleonora Autore " />
<person posts="3" size="8" who="Steven Hazel " />
<person posts="3" size="8" who="" />
<person posts="3" size="7" who="Ingo Molnar " />
<person posts="3" size="7" who="Stephan van Hienen " />
<person posts="2" size="49" who="Max " />
<person posts="2" size="13" who="Michael Schimek " />
<person posts="2" size="13" who="Kevin Waterson " />
<person posts="2" size="12" who="Simon Kirby " />
<person posts="2" size="11" who="Larry Woodman " />
<person posts="2" size="11" who="Jesse Pollard " />
<person posts="2" size="10" who="&quot;braam&quot; " />
<person posts="2" size="10" who="=?iso-8859-1?Q?Fran=E7ois=20D=E9sarm=E9nien?= " />
<person posts="2" size="10" who="Marc ZYNGIER " />
<person posts="2" size="10" who="=?iso-8859-1?Q?V=EDctor_R=2E_Ruiz?= " />
<person posts="2" size="9" who="Alex Buell " />
<person posts="2" size="9" who="Enrico Demarin " />
<person posts="2" size="9" who="Olaf Flebbe " />
<person posts="2" size="9" who="Dan Yocum " />
<person posts="2" size="8" who="Vladimir Dergachev " />
<person posts="2" size="8" who="Matthew Hanselman " />
<person posts="2" size="8" who="NIIBE Yutaka " />
<person posts="2" size="8" who="&quot;van Heusden, Folkert&quot; " />
<person posts="2" size="8" who="Harald Koenig " />
<person posts="2" size="8" who="George " />
<person posts="2" size="8" who="" />
<person posts="2" size="7" who="Andi Kleen " />
<person posts="2" size="7" who="John Goerzen " />
<person posts="2" size="7" who="Michael Clark " />
<person posts="2" size="7" who="Mario Mikocevic " />
<person posts="2" size="7" who="John Kennedy " />
<person posts="2" size="7" who=" (david parsons)" />
<person posts="2" size="7" who="&quot;Dwayne C . Litzenberger&quot; " />
<person posts="2" size="7" who="&quot;Mordechai T. Abzug&quot; " />
<person posts="2" size="7" who="&quot;Petr Vandrovec Ing. VTEI&quot; " />
<person posts="2" size="7" who="Mike Galbraith " />
<person posts="2" size="7" who="&quot;Mark H. Wood&quot; " />
<person posts="2" size="7" who="Daniel Stone " />
<person posts="2" size="7" who="&quot;Chris Jones&quot; " />
<person posts="2" size="7" who="&quot;Charles 'Buck' Krasic&quot; " />
<person posts="2" size="7" who=" (H.J. Lu)" />
<person posts="2" size="6" who="Scott Marlowe " />
<person posts="2" size="6" who="" />
<person posts="2" size="6" who="Anton Ivanov " />
<person posts="2" size="6" who="&quot;Michael H. Warfield&quot; " />
<person posts="2" size="6" who="Marc Duponcheel " />
<person posts="2" size="6" who="Borek Lupomesky " />
<person posts="2" size="6" who="Richard Dynes " />
<person posts="2" size="6" who="Jan Kara " />
<person posts="2" size="6" who=" (Miquel van Smoorenburg)" />
<person posts="2" size="6" who="Scott Maxwell " />
<person posts="2" size="6" who="Steffen Kern " />
<person posts="2" size="6" who="=?iso-8859-1?Q?Gr=E9goire?= FAVRE " />
<person posts="2" size="6" who="Junichi Saito " />
<person posts="2" size="6" who="" />
<person posts="2" size="6" who="Stephen Rothwell " />
<person posts="2" size="6" who="Bjorn Wesen " />
<person posts="2" size="6" who="Brian Capouch " />
<person posts="2" size="6" who="Chad Miller " />
<person posts="2" size="6" who="&quot;Anthony Barbachan&quot; " />
<person posts="2" size="6" who="Paul Gortmaker " />
<person posts="2" size="6" who="Tuukka Toivonen " />
<person posts="2" size="5" who="Ryan Cumming " />
<person posts="2" size="5" who="Gregory Maxwell " />
<person posts="2" size="5" who="German Jose Gomez Garcia " />
<person posts="2" size="5" who="" />
<person posts="2" size="5" who="Ron Flory " />
<person posts="2" size="5" who="Gregory McLean " />
<person posts="2" size="5" who="Wakko Warner " />
<person posts="2" size="5" who="&quot;David Parsons&quot; " />
<person posts="2" size="5" who="Al Elia " />
<person posts="2" size="5" who="Rui Sousa " />
<person posts="2" size="5" who="&quot;Stefan Monnier&quot; " />
<person posts="2" size="5" who="Bob Lorenzini " />
<person posts="2" size="5" who="Jim Roland " />
<person posts="2" size="5" who="Oliver Xymoron " />
<person posts="2" size="5" who="Ookhoi " />
<person posts="2" size="5" who="&quot;David S. Miller&quot; " />
<person posts="1" size="47" who="manfreds " />
<person posts="1" size="23" who="Braddock Gaskill " />
<person posts="1" size="15" who="Michael Meissner " />
<person posts="1" size="15" who="&quot;Mr. James W. Laferriere&quot; " />
<person posts="1" size="15" who="James Simmons " />
<person posts="1" size="13" who="Julian Anastasov " />
<person posts="1" size="9" who="Jonas Jochum " />
<person posts="1" size="9" who="&quot;Raj, Ashok&quot; " />
<person posts="1" size="9" who="John Ellson " />
<person posts="1" size="8" who="Chuck Lever " />
<person posts="1" size="8" who="Daniele Bernardini " />
<person posts="1" size="7" who="Matthias Andree " />
<person posts="1" size="6" who="Daniel Tryba " />
<person posts="1" size="6" who="Dylan Griffiths " />
<person posts="1" size="6" who=" (Leslie F. Donaldson)" />
<person posts="1" size="5" who="" />
<person posts="1" size="5" who="Marcus Sundberg " />
<person posts="1" size="5" who="Fredrik Vraalsen " />
<person posts="1" size="5" who="Q " />
<person posts="1" size="4" who="Riley Williams " />
<person posts="1" size="4" who="watermodem " />
<person posts="1" size="4" who="Wade Hampton " />
<person posts="1" size="4" who="Chip Salzenberg " />
<person posts="1" size="4" who="Petr Vandrovec " />
<person posts="1" size="4" who="Matt Robinson " />
<person posts="1" size="4" who="&quot;X-Terminate&quot; " />
<person posts="1" size="4" who="Keith Duthie " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="Erik Mouw " />
<person posts="1" size="4" who="Michael Cummins " />
<person posts="1" size="4" who="John R Lenton " />
<person posts="1" size="4" who="Ian Eure " />
<person posts="1" size="4" who="Tim Walberg " />
<person posts="1" size="4" who="&quot;Aaron J. Seigo&quot; " />
<person posts="1" size="4" who="&quot;Steve Snyder&quot; " />
<person posts="1" size="4" who="Juanjo Ciarlante " />
<person posts="1" size="4" who="Raju K V " />
<person posts="1" size="4" who="&quot;Dmitry V.&quot; " />
<person posts="1" size="4" who="Trever Adams " />
<person posts="1" size="4" who="Adam Rheaume " />
<person posts="1" size="4" who="Peter Desnoyers " />
<person posts="1" size="4" who="Enrico Demarin " />
<person posts="1" size="4" who="Jerry Peters " />
<person posts="1" size="4" who="Claudius Link " />
<person posts="1" size="4" who="David Howells " />
<person posts="1" size="3" who="Arthur Pedyczak " />
<person posts="1" size="3" who="&quot;Kelly A. Price&quot; " />
<person posts="1" size="3" who="Goofy McGoon " />
<person posts="1" size="3" who="david " />
<person posts="1" size="3" who="Jonas Aaberg " />
<person posts="1" size="3" who="David Taylor " />
<person posts="1" size="3" who="Stefan Traby " />
<person posts="1" size="3" who="Ian Baird " />
<person posts="1" size="3" who="&quot;Marco d'Itri&quot; " />
<person posts="1" size="3" who="Hugh Denman " />
<person posts="1" size="3" who="Peter Amstutz " />
<person posts="1" size="3" who="Andreas Schwab " />
<person posts="1" size="3" who="Stuart MacDonald " />
<person posts="1" size="3" who="William Stearns " />
<person posts="1" size="3" who="Andreas " />
<person posts="1" size="3" who="Joe " />
<person posts="1" size="3" who="Jan-Benedict Glaw " />
<person posts="1" size="3" who="Fabrice Bellet " />
<person posts="1" size="3" who="Christian Czezatke " />
<person posts="1" size="3" who="Thomas Sailer " />
<person posts="1" size="3" who="Adrian Bridgett " />
<person posts="1" size="3" who="Jan Echternach " />
<person posts="1" size="3" who="&quot;Vinuthananda B. (CTS)&quot; " />
<person posts="1" size="3" who="Alex Belits " />
<person posts="1" size="3" who="Tom Eastep " />
<person posts="1" size="3" who=" (Arjan van de Ven)" />
<person posts="1" size="3" who="Martin Costabel " />
<person posts="1" size="3" who="Jan Kasprzak " />
<person posts="1" size="3" who="Jakob Borg " />
<person posts="1" size="3" who="David Winchell " />
<person posts="1" size="3" who="Helge Hafting " />
<person posts="1" size="3" who="Andrea Ferraris " />
<person posts="1" size="3" who="Joseph " />
<person posts="1" size="3" who="Olaf Titz " />
<person posts="1" size="3" who="Ramon Nieto " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Rene Rebe " />
<person posts="1" size="3" who="Catalin BOIE " />
<person posts="1" size="3" who=" =?ISO-8859-1?Q?(=BB=AA=C1=A2=B7=FE=CE=F1=CB=D9=B5=DD?=)" />
<person posts="1" size="3" who="Marcus Sundberg " />
<person posts="1" size="3" who="Brian Kress " />
<person posts="1" size="3" who="Richard Stallman " />
<person posts="1" size="3" who="kaz / Yasuhide OOMORI " />
<person posts="1" size="3" who="Sushil Agrawal " />
<person posts="1" size="3" who="Steffen Kern " />
<person posts="1" size="3" who="Ville Voutilainen " />
<person posts="1" size="3" who="John Ripley " />
<person posts="1" size="3" who="Tony Hoyle " />
<person posts="1" size="3" who="Jochen Friedrich " />
<person posts="1" size="3" who="Steve VanDevender " />
<person posts="1" size="3" who="Mike Touloumtzis " />
<person posts="1" size="3" who="Sid Boyce " />
<person posts="1" size="3" who="Zack Weinberg " />
<person posts="1" size="3" who="Hans Reiser " />
<person posts="1" size="3" who="&quot;Seth M. Landsman&quot; " />
<person posts="1" size="3" who="Neil Brown " />
<person posts="1" size="3" who="Konrad Rosenbaum " />
<person posts="1" size="3" who="Brian Strand " />
<person posts="1" size="3" who="Chris Wing " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="TimO " />
<person posts="1" size="3" who="Walter Hofmann " />
<person posts="1" size="3" who="Stephen Williams " />
<person posts="1" size="3" who="Isaac Connor " />
<person posts="1" size="3" who="dave madden " />
<person posts="1" size="3" who="uabbasi " />
<person posts="1" size="3" who="&quot;H. Peter Anvin&quot; " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Andi Kleen " />
<person posts="1" size="3" who="Ted Gervais " />
<person posts="1" size="3" who="Yann Droneaud " />
<person posts="1" size="3" who="&quot;Kroah-Hartman, Greg/EXEUG3&quot; " />
<person posts="1" size="3" who="Dale R Worley " />
<person posts="1" size="3" who="Natapov Gleb " />
<person posts="1" size="3" who="&quot;Deimert, Daniel&quot; " />
<person posts="1" size="3" who="Dave " />
<person posts="1" size="3" who="Dennis Krul " />
<person posts="1" size="3" who="Wolfgang Walter " />
<person posts="1" size="3" who="Jon Evans " />
<person posts="1" size="3" who="&quot;Ulrich Windl&quot; " />
<person posts="1" size="3" who="Greg Maxwell " />
<person posts="1" size="3" who="Gabor Lenart " />
<person posts="1" size="3" who="Gerd Knorr " />
<person posts="1" size="2" who="Iain Lowe " />
<person posts="1" size="2" who="George Bonser " />
<person posts="1" size="2" who="Kay Diederichs " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Mark Lord " />
<person posts="1" size="2" who="&quot;water modem&quot; " />
<person posts="1" size="2" who="=?X-UNKNOWN?Q?Gr=E9goire_Favre?= " />
<person posts="1" size="2" who="Martin Dalecki " />
<person posts="1" size="2" who="Robert Redelmeier " />
<person posts="1" size="2" who="Martin Mares " />
<person posts="1" size="2" who="Mark Hagger " />
<person posts="1" size="2" who="Andy Henroid " />
<person posts="1" size="2" who="Jon Mitchell " />
<person posts="1" size="2" who="Dancer " />
<person posts="1" size="2" who="Piotr Wilkin " />
<person posts="1" size="2" who="&quot;D. Hugh Redelmeier&quot; " />
<person posts="1" size="2" who="Christian Robottom Reis " />
<person posts="1" size="2" who="Michael Marxmeier " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="&quot;Rafael E. Herrera&quot; " />
<person posts="1" size="2" who="Edgar Weckert " />
<person posts="1" size="2" who="Dieter =?iso-8859-1?Q?N=FCtzel?= " />
<person posts="1" size="2" who="Douglas Gilbert " />
<person posts="1" size="2" who="Antonio Miguel Ferreira Marques Trindade " />
<person posts="1" size="2" who="&quot;Thomas Pfeiffer&quot; " />
<person posts="1" size="2" who=" (Arjan van de Ven)" />
<person posts="1" size="2" who="Marcin Dalecki " />
<person posts="1" size="2" who="&quot;John Hayward-Warburton (Programming account)&quot; " />
<person posts="1" size="2" who="Torsten Landschoff " />
<person posts="1" size="2" who="&quot;Blankenship, Keith&quot; " />
<person posts="1" size="2" who="Jason L Tibbitts III " />
<person posts="1" size="2" who="Joey Wetherington " />
<person posts="1" size="2" who="Chris Q " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Marcel Lanz " />
<person posts="1" size="2" who="Richard Guenther " />
<person posts="1" size="2" who="wu_yb " />
<person posts="1" size="2" who="Michael McCormack " />
<person posts="1" size="2" who="Koby Kahane " />
<person posts="1" size="2" who="Savochkin Andrey Vladimirovich " />
<person posts="1" size="2" who="Dan " />
<person posts="1" size="2" who="&quot;Steve Cooper&quot; " />
<person posts="1" size="2" who="Patrick Audley " />
<person posts="1" size="2" who="Niels Kristian Bech Jensen " />
<person posts="1" size="2" who="Admin Mailing Lists " />
<person posts="1" size="2" who="Mikael Pettersson " />
<person posts="1" size="2" who="&quot;A.Jamal Mohamed&quot; " />
<person posts="1" size="2" who="Gregoire FAVRE " />
<person posts="1" size="2" who="Guest section DW " />
<person posts="1" size="2" who="lars brinkhoff " />
<person posts="1" size="2" who="kees " />
<person posts="1" size="2" who="Jason Gunthorpe " />
<person posts="1" size="2" who="Mark Hahn " />
<person posts="1" size="2" who="Cort Dougan " />
<person posts="1" size="2" who="Thierry Mallard " />
<person posts="1" size="2" who="Manfred " />
<person posts="1" size="2" who="Greg Zimmerman " />
<person posts="1" size="2" who="&quot;Edward S. Marshall&quot; " />
<person posts="1" size="2" who="Peter Tonoli " />
<person posts="1" size="2" who="=?ISO-8859-1?Q? &quot;S=E9rgio?= Bruno Rocha Monteiro&quot; " />
<person posts="1" size="2" who="&quot;William F. Maton&quot; " />
<person posts="1" size="2" who="Brad Dixon " />
<person posts="1" size="2" who="Maggy " />
<person posts="1" size="2" who="Luc Lalonde " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="&quot;T. P. Saravanan&quot; " />
<person posts="1" size="2" who="Jerry Frana " />
<person posts="1" size="2" who="&quot;Alan Curry&quot; " />
<person posts="1" size="2" who="&quot;Marcelo Barbosa Lima&quot; " />
<person posts="1" size="2" who="hechengdong " />
<person posts="1" size="2" who="Sujit Vaidya " />
<person posts="1" size="2" who="BOSZORMENYI Zoltan " />
<person posts="1" size="2" who="Sebastian Ip " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Michael Elizabeth Chastain " />
<person posts="1" size="2" who="f5ibh " />
<person posts="1" size="2" who="=?GB2312?B?Qy2zwrOsKFdIKQ==?= " />

</stats>

<section
  title="/proc/pci Confusion"
  subject="/proc/pci unknown devices"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9910_04/msg00307.html"
  posts="49"
  startdate="25 Oct 1999 00:00:00 -0800"
  enddate="02 Nov 1999 00:00:00 -0800"
>
<topic>Hot-Plugging</topic>
<topic>PCI</topic>
<topic>Small Systems</topic>

<mention>Miquel van Smoorenburg</mention>
<mention>Martin Mares</mention>
<mention>David Woodhouse</mention>
<mention>Bret Indrelee</mention>
<mention>Dave Jones</mention>
<mention>Jes Sorensen</mention>
<mention>Jeff Garzik</mention>
<mention>Linus Torvalds</mention>

<p>All but about 4 posts in this discussion took place within the span of a
single day. This accounts for the form of the discussion, which was a little
repetitive I think. Keith Duthie started it off by reporting on some PCI
devices that his system refused to recognize.</p>

<p>Keith had included a copy of his /proc/pci in his post, and Dan Hollis
replied that /proc/pci was being dropped in future kernels, and that Keith
should use 'lspci' instead. But Jeff Garzik quizzically pointed out that on
the contrary, /proc/pci had just been made non-optional in the 2.3.x series.</p>

<p>Dave Jones seemed to recall that Martin Mares had submitted a patch to kill
/proc/pci, and that Linus Torvalds had rejected it; and then that Martin was
now working on a patch to put PCI data directly in the kernel, as a table of
descriptive, human-readable strings. Martin confirmed this, but an upset Dan
Hollis asked, <quote who="Dan Hollis">Does this mean we will be stuck
forever with an ever-growing unswappable static text table in the
kernel?</quote> David Woodhouse pointed out that the text table was defined
as __initdata, and would be discarded at bootup, after the kernel identified
the devices that were actually installed. Bret Indrelee remarked that even
as __initdata, it still had to fit into the kernel binary, which might make
it too big for 'lilo' eventually. Torsten Landschoff added that bootdisks
would also suffer from the extra size.</p>

<p>Elsewhere, Dan said:</p>

<quote who="Dan Hollis">

<p>For those running embedded
pci systems the extra 35kb of wasted text strings is not really nice.
Especially if you are going to have to ROM the image. For some users this
could make the difference between kernel too large for lilo, and one that
works.</p>

<p>I thought we were trying to avoid M$-thinking, or is redmond starting to
influence developers, "16kb here, 32kb there, it won't matter".</p>

</quote>

<p>Gerard Roudier put in, <quote who="Gerard Roudier">May-be some kernel projects are still avoiding what you
called M$-thinking, but userland seems to have been definitely
converted.</quote></p>

<p>Jeff Garzik objected that 32K that would also be compressed in its final
form, was not so bad. Dan felt it should at least be a kernel option.</p>

<p>Going back to an earlier point in the discussion, when it was revealed that
/proc/pci had been made non-optional, Dan had expressed his surprise. As far
as he had been aware, /proc/pci had not only been optional but had also been
deprecated as obsolete. He asked about this strange reversal, and Jes
Sorensen explained that Linus had posted recently and said he liked
/proc/pci and wanted to keep it. Later, Dan said, <quote who="Dan
Hollis">Why does the *kernel* need access to descriptive text strings of
devices in order to function? This is purely for user convenience, hence it
can be in userspace with pciutils.</quote></p>

<p>Later, Theodore Y. Ts'o said:</p>

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

<p>This whole discussion
is silly; I believe Linus has already made a decision on this issue. Namely,
that /proc/pci is going to stay, because it's useful to have the ASCII text
description attached to elements in the struct pci tree. Yes, this means the
initialization tables take up 35k of space, but (a) that's uncompressed; and
the text probably compresses quite nicely, and (b) it's __initdata, which
means the space is released back to the system after the kernel boots.</p>

<p>That means that the only real cause of angst might be (a) trying to fit a
rescue kernel on a floppy disk along with rescue tools, and (b) embedded
systems. For the general case (and remember that Linus tends to like
optimizing for the general case), the cost/benefit ratio for having text
description of pci devices is in favor of keeping the text descriptions. I
imagine if someone came up with a patch that removed the __initdata table,
in the interests of embedded or rescue disk kernels, either (a) Linus would
accept it, or (b) it would be trivial to maintain separately outside of the
kernel. Either way, it's a lot of discussion over a fairly minor
point.</p>

</quote>

<p>Elsewhere, Miquel van Smoorenburg objected that hotswapping seemed to
require keeping the table in memory throughout the life of the running
system. Ted replied:</p>

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

<p>It's a good point, but
we may end up wanting to use different mechanisms to deal with hot-plug
devices versus devices detected on boot. Yes, it's best if as much of the
code path is shared as possible, but there may be enough other differences
with how we want to handle hot-plug PCI that this isn't an issue.</p>

<p>At the very least, it's probably better to try to design a complete hot-plug
solution than to make guesses about what's the best way to handle one tiny
bit of the problem now. :-)</p>

</quote>

</section>

<section
  title="Journalled Filesystem For Linux"
  subject="jfs/linux"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9910_04/msg00967.html"
  posts="16"
  startdate="28 Oct 1999 00:00:00 -0800"
  enddate="02 Nov 1999 00:00:00 -0800"
>
<topic>FS: ReiserFS</topic>
<topic>FS: XFS</topic>
<topic>FS: ext2</topic>
<topic>FS: ext3</topic>
<topic>Microsoft</topic>
<topic>POSIX</topic>
<topic>Patents</topic>

<mention>Hans Reiser</mention>

<p>Journalling was first covered in a flame war in <kcref subject="fsync on
large files" startdate="12 Feb 1999 00:00:00 -0800"></kcref>, where it came out that Stephen
C. Tweedie was extending ext2 for journalling. Then it came up in another
flame war in <kcref subject="softupdates and ext2"
startdate="31 Mar 1999 00:00:00 -0800"></kcref>. The announcement that XFS might go Open
Source appeared in a heated discussion covered in <kcref subject="[OT] SGI
to OpenSource XFS" startdate="20 May 1999 00:00:00 -0800"></kcref>. There was a heated
discussion about reiserfs and ext2 in <kcref subject="vm kills processes in
our 2.3.12 port of reiserfs - what was the story on the changes to
mark_buffer_dirty() and the too many dirty buffers issue?"
startdate="29 Aug 1999 00:00:00 -0800"></kcref>. Most recently, an ext3 status report and
discussion took place in <kcref subject="Ext3 filesystem info?"
startdate="16 Sep 1999 00:00:00 -0800"></kcref>.</p>

<p>This time, Josef H&#246;&#246;k asked if anyone was working on a journalled
filesystem for Linux. Stephen replied, <quote who="Stephen C.
Tweedie">There is journaling in test for both
reiserfs and ext2, and SGI are porting their XFS journaled filesystem to
Linux.</quote> Hans Reiser, the author of reiserfs, added that the latest
SuSE already came with reiserfs. Shawn Leas also gave a link to the <a
href="http://www.complang.tuwien.ac.at/czezatke/lfs.html">DTFS homepage</a>,
but Stephen pointed out that DTFS hadn't been under active development for
months, and was also a not really a journalled filesystem, but more of a log
structured filesystem. Christian Czezatke, the author of the DTFS, objected
that he'd been preoccupied by other things, but that he was still actively
developing the package. Elsewhere, Shawn added that DTFS had certain
problems. For one thing, since it didn't de-allocate blocks, it was still in
need of a good FS cleaner. Also, being a log-based filesystem it had
performance issues because of writing its data via 'append' rather than
'modify in place'. But he acknowledged, <quote who="Shawn Leas">The benefit comes in things like snapshots, where you can
preserve metadata at some point in time, basically having a readonly copy of
the whole FS from time HH:SS.</quote> Mike Touloumtzis added, <quote who="Mike Touloumtzis">Log-structured file systems are
also very interesting for Flash-ROMs in embedded devices. Wear leveling is a
big concern there, seek time is not. Reconciling proper GC with decent
random access times is still the trick, though.</quote></p>

<p>Bjorn Wesen and David Woodhouse both had interesting replies to this. Bjorn
said:</p>

<quote who="Bjorn Wesen">

<p>Yes. We've designed a
log-structured flash FS for embedded linux (which we'll probably release
next month as GPL). It is quite simple and optimal for small flashes with
large sectors (normally the erase granularity for flashes is big, so you
can't use a normal filesystem). I'd expect it to work for those cheaper
sequential flashes as well, although I have never built anything with that.</p>

<p>The GC is still under tuning. As it's a log-cleaner it can obviously run
pretty incremental, but the flash device's erase delay still sets the
minimum latency.</p>

</quote>

<p>And David said:</p>

<quote who="David Woodhouse">

<p>All the solutions we
currently have for filesystems on flash present a block device rather than a
filesystem interface - that is, both FTL and NFTL act as an extra
translation layer below the actual filesystem, providing 512-byte random
block access for use by a traditional filesystem.</p>

<p>It would probably be more efficient to implement a filesystem directly on
the flash, much like Microsoft's FFS2, except that FFS2 obviously isn't
POSIX-compliant, and hence isn't very interesting to us, although we do have
the beginnings of a filesystem driver for it.</p>

<p>As there are patent problems with both FTL and NFTL, it would be extremely
useful to have a POSIX-compliant filesystem designed specifically for use on
flash devices.</p>

<p>I think that there is already such a beast in existence, designed for QNX.
It would be nice to either support this or write a replacement.</p>

</quote>

</section>

<section
  title="Boot-time Tests For RAM Size And Integrity"
  subject="Perform minimal RAM test at boot"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9910_05/msg00064.html"
  posts="31"
  startdate="29 Oct 1999 00:00:00 -0800"
  enddate="04 Nov 1999 00:00:00 -0800"
>

<mention>Alan Cox</mention>
<mention>Peter Steiner</mention>

<p>Pavel Machek posted a patch to perform a simple memory test at boot time. He
explained, <quote who="Pavel Machek">I have been
bitten by non-working memory detection and stale mem=XXX option in lilo by 5
times now. Once, system even went to full multiuser and then corrupted disk
like hell.</quote></p>

<p>Adrian Bridgett suggested using something similar to Pavel's patch, to check
memory sizes; then users wouldn't have to set boot parameters to indicate
the amounts of existing ram. Alan Cox replied that Pavel's code had
theoretical problems that made it bad for detecting memory sizes, though he
acknowledged that in practice it might be a different story.</p>

<p>Peter Steiner replied with a patch that he felt did the trick. Pavel was
impressed, but suggested that when Peter's code found a memory error, rather
than marking the page as reserved and moving on as Peter had coded it to,
the patch should cause an immediate kernel panic. Peter was ambivalent, and
they appear to have had some private emails on the subject.</p>

</section>

<section
  title="CPU Speed-Change On Running Systems"
  subject="Wrong bogomips after plugging in AC power"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9910_05/msg00063.html"
  posts="37"
  startdate="29 Oct 1999 00:00:00 -0800"
  enddate="02 Nov 1999 00:00:00 -0800"
>

<mention>Mark Hahn</mention>

<p>Pavel Machek discovered that his Toshiba's CPU would change speed under
certain circumstances, e.g. it would start up at 150MHz when booting at less
than 20% battery power. The problem was that if he then plugged in the AC
power, the CPU would speed up to 300MHz, while the bogomips still retained
their old value. He added, <quote who="Pavel Machek">Therefore all udelays
are wrong by factor of two -- udelay(50) will only wait approx. 25usec. That
seems pretty dangerous to me. Maybe we need some other source of short
loops?</quote></p>

<p>Harald Koenig pointed out that this also worked in reverse: if Pavel started
his machine in fast mode and then went to slow mode, udelay(50) would wait
100usec. He added that on the Tecra 750/780 it was possible to switch
between three different CPU speeds via the Fn-F2 key combo. He agreed that
there was a problem, but didn't see when or how to check the CPU for this
change.</p>

<p>Mark Hahn suggested that '<a
href="http://lxr.linux.no/source/arch/i386/lib/delay.c?v=2.2.13#L42">__udelay</a>'
should base its timing on <a
href="http://lxr.linux.no/source/include/asm-i386/msr.h?v=2.2.13#L17">rdtsc</a>
(a clock cycle counter) on machines that fiddled with their clock in this
way. Pavel objeted that when his machine changed the speed of his CPU, it
also changed the speed of the cycle counter as well. <quote who="Pavel
Machek">That sounds like show stopper,</quote> he said. But Alan Cox
replied, <quote who="Alan Cox">Thats a gift not a show stopper. Just check
the rdtsc change between each timer tick looks believeable. Timer ticks
might get delayed but if you start to get an excessive numbers of ticks per
n cycles of the tsc you know your CPU slowed down.</quote></p>

<p>Pavel replied to this with some code to detect CPU speed changes. It didn't
recalculate bogomips, but it did detect the change. However, he pointed out
that the machine would not be aware of the speed change for at least one
timer tick. He said, <quote who="Pavel Machek">If by
chance some flaky device is used for that one-tick period, we already lost
the game...</quote></p>

<p>Elsewhere, Jeremy Fitzhardinge said, <quote who="Jeremy
Fitzhardinge">Bogomips calculation is pretty slow and CPU consuming. The
basic problem is that the premise, the CPU always runs at the same rate, is
flawed. The solution is to find some other timebase.</quote> And Ralf
Baechle added, <quote who="Ralf Baechle">This is a result of all current
CPUs being synchronous designs. There is very promising research work about
asynchronous processor designs. One of the key properties is that these
processors don't have a processor speed that is exactly defined by the
frequency of an oscilator but rather by the temperature, production process
used and many more. Even two chips that were born on the same wafer side by
side will probably differ somewhat. They use significantly less power, so
they'll probably be used in battery powered devices like laptops
first.</quote></p>

<p>Chad Miller felt Jeremy was on the right track, and suggested that if no
other suitable timebase could be found, one solution might be to <quote
who="Chad Miller">better control the APM hardware to detect what it intends
to do to the system, and adjust our bogomip constant with a
multiplier.</quote></p>

<p>Elsewhere, Erik Mouw said, <quote who="Erik Mouw">I
don't know if APM warns you about the changed processor speed, but if it
does, I'm sure it will vary wildly between computers. A userland program to
inform the kernel would be nice. If APM doesn't tell you, the userland
program will till be able to recompute the processor speed using things as
load average, initial CPU speed, and the time do to spin in a closed
loop.</quote></p>

<p>But Pavel replied:</p>

<quote who="Pavel Machek">

<p>That is not going to work.
It is too late by then. One single wrong
udelay() can corrupt your data, or crash your machine [assuming broken
hw. On good hw, no udelay is needed]. You should not run with wrong
bogomips, not even for short periods between real change and you
noticing it...</p>

<p>What are other possible timebases? [I'm talking i386 architecture]</p>

<ul>

<li>loops           - thats what we have</li>

<li>clock counter   - changes with bogomips</li>

<li>rtc             - it has 32khz time base (IIRC), that gives 31usec
granularity. Not enough.</li>

<li>timer           - it has 16bit counter, and runs 18 times a second when
65535 is used as divider. That gives me 0.84usec precission (good enough). I
just wonder how long it takes to do_read_hwtimer()...</li>

</ul>

<p>Any other ideas?</p>

</quote>

<p>No solution presented itself on the list.</p>

</section>

<section
  title="Mirroring Via The Buffer Cache"
  subject="Linux Buffer Cache Does Not Support Mirroring"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9910_05/msg00164.html"
  posts="81"
  startdate="29 Oct 1999 00:00:00 -0800"
  enddate="08 Nov 1999 00:00:00 -0800"
>
<topic>Disk Arrays: RAID</topic>
<topic>Disks: IDE</topic>
<topic>Disks: SCSI</topic>
<topic>FS: ext3</topic>
<topic>Virtual Memory</topic>

<mention>Andrea Arcangeli</mention>
<mention>Pavel Machek</mention>
<mention>Gerard Roudier</mention>

<p>This was a long and very interesting thread, worth reading in its entirety
in the archives. Jeff V. Merkey started it off, saying that the Netware
filesystem for Linux was now running mirroring, with up to 8 mirrors per
logical partition. However, using Linux's buffer cache to handle the
mirroring resulted in data being cached multiple times. He and his fellows
had rewritten the Linux buffer cache to handle their needs, and they were
anxious to get some changes into the main kernel tree.</p>

<p>Rik van Riel replied:</p>

<quote who="Rik van Riel">

<p>Basically, the buffercache
is going to be reduced hardly more than an I/O mapping layer (with probably
some extras for transactions and RAID). Caching will have to be done in the
page cache.</p>

<p>But that's something for kernel version 2.5 (when we'll probably overhaul
most of the cache stuff).</p>

<p>In the meantime, it would probably be best to use either your own buffer.c
or accept the fact that it's not going to be as efficient as you'd like it
to be.</p>

</quote>

<p>Jeff said this was the conclusion they had come to as well, and offered to
write the subsystems they'd require for 2.5; he added that this would allow
Linux file systems to support multi-segmented mirroring and fault tolerant
failover without the RAID drivers. Pavel Machek asked what was wrong with
the RAID drivers, and Jeff replied that the RAID code was extremely
primitive. Gadi Oxman replied:</p>

<quote who="Gadi Oxman">

<p>I take personal offence from
the *extremely primitive* description. The current RAID architecture
supports:</p>

<ol>

<li>Compatibility with *every* block device driver -- every block device can
be part of the RAID array, be it SCSI, IDE, whatever.</li>

<li>Compatibility with *every* file system, which just sees the RAID array
as any other block device.</li>

</ol>

<p>The above two features are achieved especially because the RAID code sits
just at the request queueing layer, above the drivers but below the
buffer/page cache and filesystems.</p>

<p>In addition, the RAID subsysystem provides the designed redundancy, good
performance, and support for hot rebuilding. The RAID-5 code, for example,
includes "full stripe" write optimization, read-modify-write cycles,
completion-write cycles, maintains an internal cache, etc.</p>

<p>Perhaps primitive, but clearly not an *extremely primitive*
architecture.</p>

</quote>

<p>Andrea Arcangeli took exception to Gadi's statement that RAID supported
every filesystem, pointing out that jfs would break with RAID. Someone asked
for more of an explanation of this, and Stephen C. Tweedie replied,
<quote who="Stephen C. Tweedie">Currently raid
expects access to be able to do things in the buffer cache bypassing the
normal ll_rw_block() device driver interface, and this violates the IO
ordering requirements imposed by jfs. We're working on it.</quote> Someone
else gave a pointer to <a
href="http://www.mail-archive.com/linux-fsdevel%40vger.rutgers.edu/msg00382.html">a
post by Stephen</a> in the archives of the linux-fsdevel mailing list.</p>

<p>Returning to Jeff's problem, Gerard Roudier said elsewhere that Jeff's
implementation of mirroring had been done at the wrong layer out of
laziness. Jeff replied, <quote who="Jeff V. Merkey">Actually, if you guys would design something a littler newer
than circa 1973 for your buffer cache design, things would be easier. The
buffer cache acts this way becuase it is based on a PRIMITIVE design that's
not far off from the textbook description found in "UNIX: a practical
implementation." Novell was doing mirroring and distributed mirroring since
about 1984. We are just trying to get linux closer to the 1990's.</quote></p>

<p>And Stephen replied:</p>

<quote who="Stephen C. Tweedie">

<p>The buffer cache is
not intended to provide primary support for doing advanced IO control. If
you want to do mirroring, then fine, do it at a different layer. We have 2
open source journaling implementations for Linux right now which work above
the buffer cache, and software raid working below it. In 2.3, _all_ file
write activity bypasses the buffer cache entirely. The fact that the process
performing write-behind in 2.3 happens to be bdflush in buffer.c is almost
incidental: it could just as easily be done at the VFS layer. Ext3
journaling on 2.2 also bypasses the buffer cache to perform IO.</p>

<p>The buffer cache isn't the place to provide mirroring.  Do it above or
below. Why wouldn't a low-level mirroring driver below ll_rw_block do what
you want? Even if it didn't, you could achieve the same effect within the
page cache using specialised write-back routines.</p>

<p>The main lack in this area is one you pointed out in an earlier email
--- the lack of any way for the VM to request that the owner of an arbitrary
page of the page cache or buffer cache release that page prevents easy
memory balancing between cache consumers. We're discussing ways to deal with
that in 2.3/2.5.</p>

</quote>

<p>Jeff replied, <quote who="Jeff V. Merkey">What
everyone is side-stepping is that the interface between the drivers and the
buffer cache is incestuous -- this prevents folks from building async I/O
based FS's on Linux. The solution is not a simple one -- the drivers and
buffer cache interface needs to be changed to elimnate these
dependencies.</quote></p>

<p>At this point Linus Torvalds came in, with:</p>

<quote who="Linus Torvalds">

<p>Actually, not at all.</p>

<p>The way to fix what you call "incestuous" is to just marry the two off for
good. They aren't incestuous, they're just living in sin..</p>

<p>The buffer cache is closely related to the drivers, and will become only
_MORE_ closely related to the drivers. That's because the buffer cache
is quite consciously being evolved into just a driver interface for IO:
the "buffer cache" is transforming away from a "cache", and into a pure
"block IO interface".</p>

<p>So no, the buffer cache doesn't support the kind of mirroring you want, and
almost certainly never will. But the page cache may eventually evolve into
the direction you're looking for.</p>

</quote>

<p>At this point several folks made technical suggestions that appealed to
Jeff, or at least that he couldn't refute right away, and the discussion
petered out.</p>

</section>

<section
  title="Some Explanation Of The 'dentry' Struct"
  subject="structure dentry help..."
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9910_05/msg00385.html"
  posts="36"
  startdate="01 Nov 1999 00:00:00 -0800"
  enddate="04 Nov 1999 00:00:00 -0800"
>
<topic>FS: NFS</topic>

<mention>Neil Brown</mention>
<mention>Richard Gooch</mention>

<p>Someone asked for an explanation of the <a
href="http://lxr.linux.no/source/include/linux/dcache.h#L58">dentry</a>
structure. Neil Brown gave a pointer to his article (based on work by
Richard Gooch) on <a
href="http://www.cse.unsw.edu.au/~neilb/oss/linux-commentary/vfs.html">The
Linux Virtual File System Layer</a>, which included a comprehensive
description of the dentry structure.</p>

<p>Meanwhile, Alexander Viro gave his own explanation:</p>

<quote who="Alexander Viro">

<p>It's slightly messy, but
the current layout looks so:</p>

<ul>

<li>d_parent: points to the parent node in the tree.</li>

<li>d_subdirs: anchor of the cyclic list that goes through all children</li>

<li>d_children: that's where the aforementioned list sits (i.e we have
parent's d_subdirs &lt;-&gt; 1st child's d_children &lt;-&gt; 2nd child's
d_children &lt;-&gt; ... &lt;-&gt; parent's d_subdirs).</li>

<li>d_mounts: who overlaps it (root of the tree mounted atop of our dentry)
_or_ dentry itself if it's not a mountpoint; in other words it's a step
upwards.</li>

<li>d_covers: opposite.</li>

<li>d_inode: inode corresponding to dentry. May be NULL (for negative
dentries).</li>

<li>d_alias: cyclic list of dentries that have the same d_inode. It's
anchored in the d_inode-&gt;i_dentry. This looks like
d_parent/d_children/d_subdirs structure. Warning: it's badly abused in
several filesystems and it is going to change. d_inode will stay as it is,
but you will be safer if you'll stay out of the d_alias (and i_dentry in
struct inode).</li>

<li>d_hash: hash chains. Anchored in hash table.</li>

<li>d_count: reference counter. Number of pointers to dentry. Pointers from
cyclic lists do not count.</li>

<li>d_name: name of dentry.</li>

<li>d_op: methods.</li>

<li>The rest: bloody mess.</li>

</ul>

<p>Notice that:</p>

<ol>

<li>we can't handle more than one dentry for a directory. VFS does not allow
that, partially due to the d_alias abuse in NFS and friends.</li>

<li>_all_ work with dcache still requires big lock. Again, fixing that will
require cleanup of d_alias/i_dentry mess.</li>

<li>we have only two states for dentry - hashed and unhashed. Life would be
much easier if we had finer separation (e.g. special case for dentry in
process of lookup()). To be changed.</li>

<li>all locking is done on inode level. It makes race prevention much
harder.</li>

<li>cached_lookup() acts funny if we find a directory dentry _and_ attempt
to revalidate it gives negative. Compare with the case of non-directory.
Handling of invalidation is tied with the d_alias/i_dentry problem - same
offenders hold the thing. It will take a large and nasty rewrite.</li>

</ol>

</quote>

<p>There followed a bit of a technical discussion regarding possible
improvements.</p>

</section>

<section
  title="SBLive Driver Source"
  subject="SBLive driver source"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9911_01/msg00105.html"
  posts="7"
  startdate="01 Nov 1999 00:00:00 -0800"
  enddate="02 Nov 1999 00:00:00 -0800"
>
<topic>Sound: SoundBlaster</topic>

<mention>Jeff Garzik</mention>

<p>Jeff Garzik gave a link to the sources of some <a
href="http://opensource.creative.com/">Soundblaster drivers for Linux</a>,
written by the company itself. Chris Jones jubilantly pointed out that the
drivers were GPLed, and asked if they would be going into the main kernel
soon. Alan Cox replied, <quote who="Alan Cox">I've been sitting on a copy of
the sblive code for a few days actually. I did an initial run through of the
code and sent them some comments back. It'll be there fairly soon.</quote></p>

<editorialize>I don't know about anyone else, but I'm still always shocked
to find hardware vendors releasing specs and publishing GPLed drivers. It
ain't like the old days. -- Zack</editorialize>

</section>

<section
  title="Serial Driver Restructuring"
  subject="Bogus serialP.h patch?"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9911_01/msg00358.html"
  posts="10"
  startdate="02 Nov 1999 00:00:00 -0800"
  enddate="04 Nov 1999 00:00:00 -0800"
>

<p>Theodore Y. Ts'o complained that a patch that had made it into 2.3.25 was
bad. According to him, it defined two structures that were <quote
who="Theodore Y. Ts'o">internal serial structures that should *not* be
exposed outside of the serial driver; they're not part of the exported
interface.</quote> Alan Cox pointed out in reply that they were not just
internal to Ted's driver, but to many other serial drivers as well.</p>

<p>Ted's point had been that these structures had been moved from a private
header file (serialP.h) into a public one (serial.h), and he suggested that
any drivers needing those structures should just include the private file.
To this, Alan replied, <quote who="Alan Cox">Then the
drivers pick up all the other junk too. If you want to split serial.h 3 ways
according to whether an item is private to your driver, private to the
kernel serial drivers or public to the whole kernel, sure.</quote></p>

<p>Ted replied that if drivers wanted that code, which amounted to 10 lines,
they should include those lines in their .c files, not make them part of a
public header file. He added, <quote who="Theodore Y. Ts'o">Putting private declarations in the public serial.h is Just
Wrong.</quote></p>

<p>Linus Torvalds came in at this point, saying:</p>

<quote who="Linus Torvalds">

<p>Actually, I've always hated the
notion of "public" versus "private", and I think "serialP.h" is just a
band-aid around a real problem which is that there is quite a lot of
incestuous knowledge about the tty layer and serial devices all over the
place.</p>

<p>First off, if it's really a _private_ header file, then it shouldn't be in
&lt;linux/serialP.h&gt; in the first place. It should be in drivers/char, and you
should use #include "16550.h" to make it clear that (a) it's not about
"serial devices", it's about a specific _class_ of serial devices and (b)
it's really just private to a specific driver (or two similar drivers), and
not a generic Linux header file.</p>

<p>Btw, calling the dang thing "16550.h" may be technically inaccurate (it
obviously is used a lot more chips than the 16550), but I think it is
_psychologically_ a lot closer to what you seem to have in mind for the
use. It would tell people what the file is about - which the current name
does not at all. The current name probably makes most people think that
the programmer was spastic and wrote an extra 'P' by mistake.</p>

<p>But I don't care all that much. I think that either we should do the
one-liner to make existing things happy as things stand (which is basically
what Alan did), or we should just fix the thing _right_, in which case the
"serialP.h" file goes away - moved or integrated, I don't much think there
is all that much of a difference (the integration should be much more
complete, with a "serial device layer" kind of support structure
etc).</p>

</quote>

<p>Ted replied, <quote who="Theodore Y. Ts'o">One of the
things which has been on my todo list for a long time, but which has
languished due to lack of time, has been to move more functionality into the
tty layer. Break handling and tty baud calculations have already been moved
into the tty layer; the same goes for the tty flip buffers, and so on.
That's probably far cleaner than creating a new "serial device layer". But
other than that, I agree.</quote></p>

</section>

<section
  title="Patent Infringement Or Prior Art In Linux Code"
  subject="Patent"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9911_01/msg00359.html"
  posts="23"
  startdate="02 Nov 1999 00:00:00 -0800"
  enddate="06 Nov 1999 00:00:00 -0800"
>
<topic>Patents</topic>

<p>Gregory Maxwell gave a pointer to a search in the <a
href="http://164.195.100.11/netacgi/nph-Parser?Sect1=PTO2&amp;Sect2=HITOFF&amp;p=1&amp;u=/netahtml/search-bool.html&amp;r=1&amp;f=G&amp;l=50&amp;co1=AND&amp;d=curr&amp;s1='McDonnell+Douglas'&amp;s2='year+2000'&amp;OS='McDonnell+Douglas'+AND+'year+2000'&amp;RS='McDonnell+Douglas'+AND+'year+2000'">US
Patent And Trademark Office</a>, and added:</p>

<quote who="Gregory Maxwell">

<p>I thought you all might
want to know: Almost all Linux kernels today are infringing on US patent
#5,806,063. The infringing code is in
linux/arch/i386/kernel/time.c:get_cmos_time. It deals with using 'windowing'
to convert non-y2k-ok dates into 4 digit dates.</p>

<p>Nevermind the fact that Linux had this code more then a year before the
patent was applied for. :)</p>

<p>How does the GPL look opon this, can I still distribute Linux since I dont
agree with the patent? If I (as say a linux distro) license the patent (to
cover my ass) could I still distribute Linux?</p>

</quote>

<p>Richard M. Stallman replied, <quote who="Richard M. Stallman">I will ask our
lawyer to double-check whether Linux constitutes prior art for the patent.
If it does, it would be grounds to render the patent invalid. Could you tell
mre precisely what Linux does with the dates, and in what context, for what
purpose? The lawyer may need to know those things.</quote></p>

<p>In response to Greg's question, "If I (as say a linux distro) license the
patent (to cover my ass) could I still distribute Linux," Richard went on:</p>

<quote who="Richard M. Stallman">

<p>If the patent license you get covers
redistribution by the people who get copies indirectly from you, that is
consistent with the GPL. However, if the license does not cover this, if you
would not be able to extend that permission to redistributors, you would not
be able to distribute in a way that satisfies the GPL.</p>

<p>The situation is the same whether you are distributing just Linux or a whole
Linux-based GNU system.</p>

<p>I don't think you need to worry about getting a license for this particular
patent, though.</p>

</quote>

<p>Elsewhere, Joe Acosta said:</p>

<quote who="Joe Acosta">

<p>As a former Patent Examiner,
I feel that I can shed some light on patents. Someting to keep in mind when
looking at them is the claims. Claims are really the major part of a patent
that have any relevance.</p>

<p>Claims 1 and 11 are the independant claims and both of those claims
specifically state "A method of processing dates in a database,..."</p>

<p>Does the linux kernel use a database? (retorical q here) I think not .. thus
this patent is irrelevant to what is being done in kernel code.</p>

<p>However all the compaines that are using 'pivit logic' with databases are at
risk of possible infringement. Now even if you have proof of this logic in
the linux kernel one must prove that it is obvious to use such logic within
a database. Seeing as just about eveyone in the industry uses this kind of
logic in there database apps, I'd say it was not rocket science but I am not
an attourney 'I have legs' (LOL).</p>

<p>Personally I am ammazed at what people today call novel and want patent
protection over. Companies want to patent there data structures.. no joke a
certain co in a certain northwest state was and probably still is trying
this. I had to leave that place cause my waders were not tall enough.</p>

<p>So next patent you see read the claims carefully first and look for the
independant claims as they are the 'meat'. The rest of the patent is there
for clairification as to what the claims are referring to and for the legal
b******t that goes into patents.</p>

</quote>

<p>Elsewhere, Gregory McLean suggested pointing out to the US Patent Office
that Linux represents prior art, and getting the patent anulled on that
basis. But Michael H. Warfield caught him by the sleeve and said:</p>

<quote who="Michael H. Warfield">

<p>Be careful there!
You do NOT want to raise the issue with the PTO! Under their administrative
rules, they can review the patent and only the patent hold is allowed to
present "evidence" and challengers are not permitted any standing or any
position to counter that evidence. If they "win" the review, which they
often do, that fact is then admissible in court. At least one individual was
known to try and get people to challenge him at the PTO knowing full well
that he would lose in open court. After winning an administrative ruling, he
then held the advantage in subsequent court challenges and had an improve
chance of winning at court.</p>

<p>You are generally better off challenging a patent in court FIRST before any
PTO review.</p>

</quote>

<p>Elsewhere, Theodore Y. Ts'o suggested:</p>

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

<p>the best thing to do is
ignore it. Let the patent holders try to sue us first, at which point it can
be defeated pretty easily.</p>

<p>It would be interesting for someone to set up a www.priorart.org web site,
dedicated towards finding and exposing stupid USPTO tricks; the problem is
that it would be a legal lightening rod, and it would have to be careful to
disclaim that it was giving anything that might be construed as legal
advice, or inducements to infringe patents (valid or otherwise); but just as
a data repository of data that might or might not be accurate. Followups on
this should go elsewhere, as it's not really a kernel issue.</p>

</quote>

<p>Elsewhere, Richard B. Johnson said:</p>

<quote who="Richard B. Johnson">

<p>If anybody's
interested, I can provide source-code, dated in the first part of this
decade (1991), that uses the obvious "windowing" mechanism to set the
century byte of the CMOS chip. This is used in the Analogic 2030 arbitrary
function generator. I wrote the BIOS. This source-code is proprietary,
however, to support a petition against MD, it could certainly be referenced
and possibly forced into evidence if a complaint ever went that far.</p>

<p>Just because a patent was issued, it does not mean it's valid. If the patent
holder is informed that your use predates his, and it becomes obvious that
there was prior art not cited in the application, the patent holder will
usually issue an "unrestricted license" so that nobody has to show patent
validity or otherwise.</p>

</quote>

<p>H. Peter Anvin added, <quote who="H. Peter Anvin">Actually, the windowing approach was used in PC-DOS 2.0
(1981-or-so): if you enter a two-digit date it is mapped on the 1980-2079
window.</quote></p>

</section>

</kc>
