<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="218" date="07 Jun 2003 00:00:00 -0800" />

<stats posts="867" size="4150" contrib="265" multiples="132" lastweek="152">

<person posts="37" size="157" who="Andrew Morton" />
<person posts="37" size="128" who="Paul Fulghum" />
<person posts="22" size="67" who="William Lee Irwin III" />
<person posts="21" size="66" who="Zwane Mwaikambo" />
<person posts="19" size="77" who="&quot;H. Peter Anvin&quot;" />
<person posts="19" size="64" who="Chris Wright" />
<person posts="18" size="82" who="Greg KH" />
<person posts="18" size="52" who="Dave Jones" />
<person posts="18" size="52" who="Alan Cox" />
<person posts="17" size="76" who="Andrea Arcangeli" />
<person posts="14" size="41" who="Christoph Hellwig" />
<person posts="13" size="97" who="Duncan Sands" />
<person posts="13" size="59" who="Alan Stern" />
<person posts="12" size="60" who="David Howells" />
<person posts="12" size="39" who="Dave McCracken" />
<person posts="11" size="52" who="Alex Riesen" />
<person posts="11" size="37" who="Martin Schlemmer" />
<person posts="10" size="44" who="Linus Torvalds" />
<person posts="10" size="32" who="Andi Kleen" />
<person posts="10" size="29" who="&quot;David S. Miller&quot;" />
<person posts="9" size="95" who="Alexander Hoogerhuis" />
<person posts="9" size="39" who=" (Eric W. Biederman)" />
<person posts="9" size="30" who="Arjan van de Ven" />
<person posts="8" size="31" who="Jan Harkes" />
<person posts="8" size="26" who="Sam Ravnborg" />
<person posts="7" size="48" who="Felipe Alfaro Solana" />
<person posts="7" size="25" who="Davide Libenzi" />
<person posts="7" size="22" who="(mikpe)" />
<person posts="6" size="142" who="&quot;Nguyen, Tom L&quot;" />
<person posts="6" size="47" who="Rusty Russell" />
<person posts="6" size="45" who="David Mosberger" />
<person posts="6" size="34" who=" (David Kastrup)" />
<person posts="6" size="32" who="&quot;Douglas E. Engert&quot;" />
<person posts="6" size="22" who="(Valdis.Kletnieks)" />
<person posts="6" size="21" who="Ingo Molnar" />
<person posts="6" size="19" who="Trond Myklebust" />
<person posts="6" size="19" who="James Bottomley" />
<person posts="6" size="17" who="&quot;Randy.Dunlap&quot;" />
<person posts="5" size="148" who="Pavel Machek" />
<person posts="5" size="32" who="Christoph Hellwig" />
<person posts="5" size="20" who="&quot;Riley Williams&quot;" />
<person posts="5" size="17" who="Adrian Bunk" />
<person posts="5" size="17" who="Anders Karlsson" />
<person posts="5" size="15" who="Andi Kleen" />
<person posts="5" size="14" who="&quot;Martin J. Bligh&quot;" />
<person posts="5" size="13" who="Chuck Ebbert" />
<person posts="4" size="120" who="Andreas Henriksson" />
<person posts="4" size="57" who="Michael Reincke" />
<person posts="4" size="32" who="Brian Gerst" />
<person posts="4" size="28" who="Garance A Drosihn" />
<person posts="4" size="18" who="Brett" />
<person posts="4" size="15" who="&quot;Dean McEwan&quot;" />
<person posts="4" size="15" who="&quot;David Schwartz&quot;" />
<person posts="4" size="14" who="David Ford" />
<person posts="4" size="13" who="Werner Almesberger" />
<person posts="4" size="13" who="&quot;Neulinger, Nathan&quot;" />
<person posts="4" size="13" who="Jamie Lokier" />
<person posts="4" size="12" who="Dan Kegel" />
<person posts="4" size="12" who="Rik van Riel" />
<person posts="4" size="12" who="Patrick Mochel" />
<person posts="4" size="11" who="Jeff Garzik" />
<person posts="4" size="11" who="Bartlomiej Zolnierkiewicz" />
<person posts="3" size="28" who="John Myers" />
<person posts="3" size="23" who="Manfred Spraul" />
<person posts="3" size="21" who="&quot;David Lewis&quot;" />
<person posts="3" size="20" who="Rick Lindsley" />
<person posts="3" size="13" who="jw schultz" />
<person posts="3" size="13" who="Martin Diehl" />
<person posts="3" size="13" who="Martin Josefsson" />
<person posts="3" size="13" who="Corey Minyard" />
<person posts="3" size="12" who="Mike Galbraith" />
<person posts="3" size="12" who="Daniel McNeil" />
<person posts="3" size="12" who="Eugene Weiss" />
<person posts="3" size="11" who="Russell King" />
<person posts="3" size="11" who="Herbert Xu" />
<person posts="3" size="11" who="Arthur Perry" />
<person posts="3" size="10" who="Grant Grundler" />
<person posts="3" size="10" who="Clemens Schwaighofer" />
<person posts="3" size="9" who="Oleg Drokin" />
<person posts="3" size="9" who="Kai Germaschewski" />
<person posts="3" size="9" who="&quot;Richard B. Johnson&quot;" />
<person posts="3" size="9" who="Florian Weimer" />
<person posts="3" size="9" who="Ingo Oeser" />
<person posts="3" size="8" who="Helge Hafting" />
<person posts="3" size="7" who="Paul Mackerras" />
<person posts="3" size="7" who="James Morris" />
<person posts="2" size="54" who="David Howells" />
<person posts="2" size="39" who="&quot;cosmos&quot;" />
<person posts="2" size="34" who="chas williams" />
<person posts="2" size="30" who="YOSHIFUJI Hideaki / =?iso-2022-jp?B?GyRCNUhGIzFRTEAbKEI=?=" />
<person posts="2" size="18" who="Diego Calleja =?ISO-8859-15?Q?Garc=EDa?=" />
<person posts="2" size="16" who="Mark Watts" />
<person posts="2" size="16" who="Jim Nance" />
<person posts="2" size="15" who="Andre Hedrick" />
<person posts="2" size="9" who="Nathan Neulinger" />
<person posts="2" size="9" who="Booker Bense" />
<person posts="2" size="8" who="James Simmons" />
<person posts="2" size="8" who="&quot;Nakajima, Jun&quot;" />
<person posts="2" size="8" who="Chris Friesen" />
<person posts="2" size="8" who="Jakob Oestergaard" />
<person posts="2" size="8" who="&quot;Henning P. Schmiedehausen&quot;" />
<person posts="2" size="7" who="David Woodhouse" />
<person posts="2" size="7" who="&quot;Andrey Borzenkov&quot;" />
<person posts="2" size="7" who="Paul McKenney" />
<person posts="2" size="7" who="Miles Bader" />
<person posts="2" size="6" who="Jesse Barnes" />
<person posts="2" size="6" who="(jlnance)" />
<person posts="2" size="6" who="Kevin Brosius" />
<person posts="2" size="6" who="Pavel Machek" />
<person posts="2" size="6" who=" (=?iso-8859-1?q?M=E5ns_Rullg=E5rd?=)" />
<person posts="2" size="6" who="(Andries.Brouwer)" />
<person posts="2" size="6" who="&quot;J.C. Wren&quot;" />
<person posts="2" size="6" who="Miles T Lane" />
<person posts="2" size="6" who="Carl-Daniel Hailfinger" />
<person posts="2" size="6" who="john stultz" />
<person posts="2" size="5" who="Jaroslav Kysela" />
<person posts="2" size="5" who="Stian Jordet" />
<person posts="2" size="5" who="Russ Allbery" />
<person posts="2" size="5" who="Andries Brouwer" />
<person posts="2" size="5" who="(viro)" />
<person posts="2" size="5" who="&quot;Barry K. Nathan&quot;" />
<person posts="2" size="5" who="Paul P Komkoff Jr" />
<person posts="2" size="5" who="Gregoire Favre" />
<person posts="2" size="5" who="Lars Marowsky-Bree" />
<person posts="2" size="5" who="Anton Blanchard" />
<person posts="2" size="5" who="bert hubert" />
<person posts="2" size="5" who="Marc-Christian Petersen" />
<person posts="2" size="5" who="jjs" />
<person posts="2" size="4" who="Geert Uytterhoeven" />
<person posts="2" size="4" who="Pawan Deepika" />
<person posts="2" size="4" who="Michael Knigge" />
<person posts="2" size="4" who="Halil Demirezen" />
<person posts="1" size="35" who="John Shillinglaw" />
<person posts="1" size="35" who="Grzegorz Jaskiewicz" />
<person posts="1" size="33" who="Alex Tomas" />
<person posts="1" size="19" who="Denis Vlasenko" />
<person posts="1" size="15" who="Brad Stockdale" />
<person posts="1" size="12" who="DevilKin" />
<person posts="1" size="11" who="Jes Sorensen" />
<person posts="1" size="11" who="jeSPer Holm" />
<person posts="1" size="10" who=" (Dr. Greg Wettstein)" />
<person posts="1" size="8" who="&quot;Downing, Thomas&quot;" />
<person posts="1" size="8" who=" (John Myers)" />
<person posts="1" size="8" who="Per Mildner" />
<person posts="1" size="7" who="Dave Hansen" />
<person posts="1" size="6" who="benny" />
<person posts="1" size="6" who="Richard Henderson" />
<person posts="1" size="6" who=" (Marc SCHAEFER)" />
<person posts="1" size="6" who="Neil Brown" />
<person posts="1" size="6" who="&quot;Luck, Tony&quot;" />
<person posts="1" size="6" who="&quot;D &amp; E Radel&quot;" />
<person posts="1" size="6" who="Torrey Hoffman" />
<person posts="1" size="6" who="Xose Vazquez Perez" />
<person posts="1" size="5" who="Con Kolivas" />
<person posts="1" size="5" who="(ross.alexander)" />
<person posts="1" size="5" who="Guennadi Liakhovetski" />
<person posts="1" size="5" who="Eng Se-Hsieng" />
<person posts="1" size="5" who="Daniel Stekloff" />
<person posts="1" size="5" who="Ralph Doncaster" />
<person posts="1" size="5" who="colin" />
<person posts="1" size="5" who="&quot;Scott M. Dier&quot;" />
<person posts="1" size="4" who=" (Andrew Church)" />
<person posts="1" size="4" who="&quot;Robert White&quot;" />
<person posts="1" size="4" who="Jesse Pollard" />
<person posts="1" size="4" who="Kendrick Hamilton" />
<person posts="1" size="4" who="Simon Kirby" />
<person posts="1" size="4" who="Erik Andersen" />
<person posts="1" size="4" who="Sami Nieminen" />
<person posts="1" size="4" who="Gerrit Huizenga" />
<person posts="1" size="4" who="Dave Olien" />
<person posts="1" size="4" who="Simon Kirby" />
<person posts="1" size="4" who="&quot;Zephaniah E. Hull&quot;" />
<person posts="1" size="4" who="=?ISO-8859-1?Q?Mika_Penttil=E4?=" />
<person posts="1" size="4" who="&quot;Joseph Fannin&quot;" />
<person posts="1" size="4" who=" (Linus Torvalds)" />
<person posts="1" size="4" who="Marc Zyngier" />
<person posts="1" size="3" who="Olaf Hering" />
<person posts="1" size="3" who="Bernhard Rosenkraenzer" />
<person posts="1" size="3" who="Steven French" />
<person posts="1" size="3" who="Arnd Bergmann" />
<person posts="1" size="3" who="(epcinquire)" />
<person posts="1" size="3" who="Keith Owens" />
<person posts="1" size="3" who="Ethan Sommer" />
<person posts="1" size="3" who="Peter Chubb" />
<person posts="1" size="3" who="Steve Brueggeman" />
<person posts="1" size="3" who="&quot;Feldman, Scott&quot;" />
<person posts="1" size="3" who="Stuffed Crust" />
<person posts="1" size="3" who="Pete Zaitcev" />
<person posts="1" size="3" who="Edward King" />
<person posts="1" size="3" who="David Ashley" />
<person posts="1" size="3" who="Henning Schmiedehausen" />
<person posts="1" size="3" who="Tomas Szepe" />
<person posts="1" size="3" who="Harald Barth" />
<person posts="1" size="3" who="Bill Davidsen" />
<person posts="1" size="3" who="Lionel Elie Mamane" />
<person posts="1" size="3" who="Derek Atkins" />
<person posts="1" size="3" who="&quot;Petr Vandrovec&quot;" />
<person posts="1" size="3" who="Joel Jaeggli" />
<person posts="1" size="3" who="Stephan von Krawczynski" />
<person posts="1" size="3" who=" (Florin Iucha)" />
<person posts="1" size="3" who="Jonathan Matthews" />
<person posts="1" size="3" who="Justin Pryzby" />
<person posts="1" size="3" who="Johannes Erdfelt" />
<person posts="1" size="3" who="&quot;E-mail business&quot;" />
<person posts="1" size="3" who="Greg Ungerer" />
<person posts="1" size="3" who="Nigel Cunningham" />
<person posts="1" size="3" who="LeVA" />
<person posts="1" size="3" who="Roger Luethi" />
<person posts="1" size="3" who="Andrew Vasquez" />
<person posts="1" size="3" who="Alex Pires de Camargo" />
<person posts="1" size="3" who="&quot;Publish with CyberRead&quot;" />
<person posts="1" size="3" who="Adam Hunt" />
<person posts="1" size="3" who="=?ISO-8859-2?Q?Rafa=B3?= 'rmrmg' Roszak" />
<person posts="1" size="3" who="Michael Buesch" />
<person posts="1" size="2" who="Stephen Hemminger" />
<person posts="1" size="2" who="Roman Zippel" />
<person posts="1" size="2" who="Andrew McGregor" />
<person posts="1" size="2" who="&quot;Mudama, Eric&quot;" />
<person posts="1" size="2" who="Rudmer van Dijk" />
<person posts="1" size="2" who="Derrick J Brashear" />
<person posts="1" size="2" who="(ssamantra)" />
<person posts="1" size="2" who="Hanna Linder" />
<person posts="1" size="2" who="Falk Hueffner" />
<person posts="1" size="2" who="&quot;J.A. Magallon&quot;" />
<person posts="1" size="2" who="Milton Miller" />
<person posts="1" size="2" who="Chris Mason" />
<person posts="1" size="2" who="Kurt Wall" />
<person posts="1" size="2" who="Neale Banks" />
<person posts="1" size="2" who="&quot;Bradley W. Langhorst&quot;" />
<person posts="1" size="2" who="Matthew Wilcox" />
<person posts="1" size="2" who="Krzysztof Halasa" />
<person posts="1" size="2" who="Matt Mackall" />
<person posts="1" size="2" who="&quot;Justin T. Gibbs&quot;" />
<person posts="1" size="2" who="Lionel Bouton" />
<person posts="1" size="2" who="Duncan Sands" />
<person posts="1" size="2" who="Roland Dreier" />
<person posts="1" size="2" who="(glozano)" />
<person posts="1" size="2" who="&quot;kernel&quot;" />
<person posts="1" size="2" who="Cliff White" />
<person posts="1" size="2" who="Frank Cusack" />
<person posts="1" size="2" who="Jamal Hadi" />
<person posts="1" size="2" who="Edwin Top" />
<person posts="1" size="2" who="Samium Gromoff" />
<person posts="1" size="2" who="Felix von Leitner" />
<person posts="1" size="2" who="&quot;Edwin Jones&quot;" />
<person posts="1" size="2" who="(S-n-e-a-k-e-r)" />
<person posts="1" size="2" who="Alistair Strachan" />
<person posts="1" size="2" who="Dean Anderson" />
<person posts="1" size="2" who="lhoSara Elisa" />
<person posts="1" size="2" who="Fabien Combernous" />
<person posts="1" size="2" who="Ed L Cashin" />
<person posts="1" size="2" who="Milton Miller" />
<person posts="1" size="2" who="(aradorlinux)" />
<person posts="1" size="2" who="Timothy Miller" />
<person posts="1" size="2" who="=?iso-8859-1?q?Etienne=20Lorrain?=" />
<person posts="1" size="2" who="&quot;COMALP - Mar.Ord. MATTIUZZO Riccardo&quot;" />
<person posts="1" size="2" who="Alan Cox" />
<person posts="1" size="2" who="Mike Dresser" />
<person posts="1" size="2" who="Lura Likourgiotis" />
<person posts="1" size="1" who="Kristina Kendall" />
<person posts="1" size="1" who="=?iso-8859-1?q?nicola=20peserico?=" />
<person posts="1" size="1" who="Janee Carnegie" />
<person posts="1" size="1" who="Denis Zaitsev" />
<person posts="1" size="1" who="=?GB2312?B?0MLKsbT6zfg=?=" />

</stats>

<section
  title="In-Core AFS Multiplexer And PAG Support"
  subject="[PATCH] in-core AFS multiplexor and PAG support"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0305.1/1500.html"
  posts="78"
  startdate="13 May 2003 07:39:20 -0800"
  enddate="18 May 2003 10:06:24 -0800"
>
<topic>FS: NFS</topic>
<topic>Samba</topic>

<mention>Christoph Hellwig</mention>

<p>David Howells said:</p>

<quote who="David Howells">

<p>Here's a patch to add three things that are required for AFS and that may be
of use to other stuff (such as NFSv4 and Samba):</p>

<p>

<ol>

<li>

<p>PAG (Process Authentication Group) support. A PAG is ID'd by a unique
     number, and is represented in memory as a structure that has a ring of
     associated authentication tokens.</p>

<p>     Each process can either be part of a PAG, or it can PAG-less - in which
     case it has no authentication tokens.</p>

<p>     Two new syscalls are added: setpag and getpag.</p>

</li>

<li>

<p>Authentication token support. An authentication token is a blob of binary
     data that is keyed by filesystem name and fs-specific key (such as AFS
     cell name or SMB workgroup).</p>

<p>     These are retained in two places: each PAG has a ring of tokens
     appropriate to the group of processes within that PAG; and each struct
     file has a pointer to the single token governing that file (if there is
     one).</p>

</li>

<li>AFS multiplexor support. Not complete at the moment, but implemented far
     enough to provide access to the PAG mechanism. Further patches will be
     forthcoming to make this fully functional.   </li>

</ol>

</p>

<p>It is my intention to add Trond's vfs_cred stuff in at some point, but that
has a lot greater impact than this patch (which has negligible impact).</p>

</quote>

<p>Christoph Hellwig said this would be too significant a change to make
it into the 2.6 tree; but David said he thought it could go in. Elsewhere,
Linus Torvalds said the patch was ugly; and offered some technical advice;
then a bunch of folks discussed the implementation details for awhile.</p>

<p>Elsewhere, under the Subject: <a
href="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0305.1/1912.html">[PATCH]
PAG support, try #2</a>, David posted an updated patch incorporating folks'
comments. Linus replied:</p>

<quote who="Linus Torvalds">

<p>I still really don't like this, and think it needs to be thought through a
_lot_ more.  I also think this is _way_ waaaay too late to get into
2.6.x anyway.</p>

<p>Anyway, the thing I think is just fundamentally broken about this is</p>

<p>

<ul>

<li>

<p>I'm convinced this is designed for AFS, and not for any practical use.
   For example, the "PAG" identifier (pag_t) is not any bigger than
   "uid_t", which means that there is no sane way to map users onto pags
   without just making them 1:1.</p>

<p>   Which looks like a frigging _bad_ design, one that doesn't take account
   of what a normal user (and current AFS/Kerberos users are by design
   _not_ normal users) might want to have through something like "pam".</p>

</li>

<li>

<p>A token can be on only one pag, which means that you have to duplicate
   tokens and then have a very hard time revocing them if you want to. In
   other words, you can never give another user (which by implication is
   always another pag in my mind) a token, since you've now effectively
   lost the ability to invalidate it (the other user gets a copy of the
   token).</p>

<p>   End result: again, this looks like it is designed for the _wrong_ usage
   of sharing a whole PAG or sharing nothing at all. Which is probably
   what current AFS users do, but it sounds inflexible and _wrong_ to me.
   The main PAG usage I personally envision would be something where the
   PAG contains the decryption key to a filesystem or similar, which
   definitely is something where you (a) want to have multiple keys and
   (b)  you want to have multiple PAG's that can share some keys without
   being the same PAG.</p>

</li>

</ul>

</p>

<p>I suspect both of these problems could be fixed by another level of
indirection: a "user credential" is really a "list of PAG's", with the PAG
being a "list of keys". Joining a PAG _adds_ that PAG to the user
credentials, instead of replacing the old credentials with the new one.</p>

<p>And "pag_t" needs to be bigger, at least 64 bits. That, together with the
"credential == 'list of PAG'" thing means that you can choose to do things
like:</p>

<p>

<ul>

<li>

<p>high bits zero, low bits match the UID (ie all users automatically get
   their own "private PAG", PAM just does the joining automatically)</p>

<p>   I personally _require_ this. End of discussion. Anything that doesn't
   allow for user-friendly automatic PAG's is, in my not-so-humble
   opinion, a total waste of time, and complete CRAP.</p>

<p>   Did I make my opinion clear enough? In other words, when I log in, I
   want to automatically get certain credentials, and I consider the
   log-in sequence to be sufficient security for those credentials.</p>

<p>   Anything that isn't designed for this is WRONG.</p>

</li>

<li>high bits "group pattern", low bits "GUID" - same thing as UID. Some
   PAG's are automatically associated with the _group_ ID of the person.
   When I log in, and I'm in the "engineering" group, I should
   automatically get access to the "engineering PAG".</li>

<li>

<p>users can controlledly join other PAGs as they wish (ie if you want to
   have credentials that are on top of the automatic user credentials, you
   have to join them explicitly, which migth require a stronger password
   or something)</p>

<p>   This allows for the "extra" credentials, and it also allows for users
   joining each others PAG's at least temporarily. It also allows things
   like extra groups outside of the traditional scope of groups (ie you
   can set up ad-hoc groups by creating a new PAG, and letting others join
   it).</p>

</li>

</ul>

</p>

<p>Anyway, I htink the current patch is totally unusable for any reasonable
MIS setup (ie you couldn't make it useful as a PAM addition even if you
tried), and is totally special-cased for one (not very interesting, to me)
use.</p>

<p>And I think this will be a 2.7.x issue, if only because you guys will need
to convince me that I'm wrong.</p>

</quote>

<p>The technical discussion continued, but no one pushed for inclusion
in 2.6.</p>

</section>

<section
  title="New submount Removable Media Handler"
  subject="[ANNOUNCE] submount: another removeable media handler"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0305.2/0018.html"
  posts="10"
  startdate="15 May 2003 21:06:37 -0800"
  enddate="19 May 2003 09:12:38 -0800"
>
<topic>FS: autofs</topic>
<topic>FS: ext2</topic>
<topic>Ioctls</topic>

<mention>Alex Riesen</mention>

<p>Eugene Weiss announced:</p>

<quote who="Eugene Weiss">

<p>Submount:  Yet another attempt at solving the removeable media problem.</p>

<p>It has been tested only on 2.5.66 and 2.5.69 so far, but should work on
many earlier 2.5.x kernels as well.  I would greatly appreciate feedback
from anyone who would like to check it out.  It is available at <a
href="http://sourceforge.net/projects/submount/">http://sourceforge.net/projects/submount/</a></p>

<p><i>How it Works:</i></p>

<p>It is composed of two parts: a kernel module and a userspace program.</p>

<p>The kernel module, titled subfs, implements a dummy filesystem which is
mounted on the desired mountpoint.  Before a process can access a directory,
or any file bellow it, one of two filesystem methods must be called: open() or
lookup().  When subfs gets a call to either of these functions, it calls the
userspace part of submount, which then mounts the appropriate filesystem on
top of the subfs mountpoint, forks off a daemon for unmounting, and exits.  If
the mount was successful, subfs uses the signal handling system to restart the
system call, which then is executed on the real filesystem.  Subfs then
restarts the system calls of any other requests that arrived while the mount
was taking place.</p>

<p>The userspace portion of submount is titled /sbin/submountd.  It is a small
program that does some minimal options processing, and then makes the mount()
system call.  If the mount is successful, it forks off a new process which
enters a one second loop checking whether the filesystem can be unmounted.</p>

<p><i>Advantages:</i></p>

<p>Small, light, and fast.  The kernel module is about 11kB, the user program
about 21kB.</p>

<p>Requires no changes to the kernel code outside its own module.</p>

<p>The kernel portion is very simple.  The feature set is implemented in
userspace.</p>

<p>All IO is handled through the real filesystem at its full speed.  When the IO
is heaviest, submount imposes no performance penalty at all.</p>

<p>Flexible.  Another program can be substituted for submountd if the system in
question has particular needs.  One could even use a shell script that calls
the regular mount and umount utilities.</p>

<p>No configuration needed, except fstab.</p>

<p><i>Problems:</i></p>

<p>Not quite as fast as a permanently mounted filesystem, since the dentry cache
is purged on unmounting.  Directories must be read again each time they are
called after unmounting even though the disk hasn't changed.</p>

<p>Errors are registered quietly.  If the user makes a typo in the mount command,
or in the fstab file, it may be necessary to read the system log to discover
it.  (Perhaps mount could be made to do some syntax checking when a subfs
filesystem is mounted?)</p>

<p>Programs which automatically mount a cdrom directory from fstab can mount a
second subfs directory over the filesystem mounted by the first.  This could
be checked for in subfs, but it would be better to do it in the mount
utility.</p>

<p><i>Installation and usage:</i></p>

<p>The sources, both kernel and userspace, can be downloaded from <a
href="http://sourceforge.net/projects/submount/">http://sourceforge.net/projects/submount/</a>.
The userspace program is built in the usual way, and a makefile is provided
for building the kernel module.</p>

<p>To mount a drive under subfs, use the usual syntax, except put subfs in the
filesystem type field, and add the option fs=&lt;fstype&gt; in the options
list.</p>

<p>for example</p>

<p>mount -t subfs /dev/scd0 /mnt/cdrom -o fs=iso9660,ro</p>

<p>or for fstab</p>

<p>/dev/scd0 /mnt/cdrom subfs fs=iso9660,ro</p>

<p>I've copied the function to find the filesystem type by reading the superblock
from mount, so fs=auto will work.  It can, however, cause a noticeable pause,
particularly on floppies, so there is another method for using multiple
filesystems.  If a keyword is used in the fs= option, submountd will attempt
to mount filesystems from a list.  Currently there are two options:
fs=floppyfss attempts vfat and ext2, and fs=cdfss tries iso9660 and udf.
Submountd will strip the options "codepage", "iocharset" and "umask" from
filesystems that don't take them, so these can be included in list mounts, or
auto-detected mounts.</p>

<p>These fstab lines should work:</p>

<p>/dev/scd0 /mnt/cdrom subfs fs=cdfss,ro,iocharset=iso8859-1,umask=0 0 0<br />
/dev/fd0 /mnt/floppy subfs fs=floppyfss,iocharset=iso8859-1,sync,umask=0 0 0</p>

<p>Once this is done, just access the mountpoint directory as usual.</p>

</quote>

<p>Alex Riesen asked how this was different from the automounter (AutoFS)
project, and Eugene replied, <quote who="Eugene Weiss">Autofs works by
creating a special filesystem above the vfs layer, and passing requests and
data back and forth.   Submount actually does much less than this- it puts a
special filesystem underneath the real one, and the only things it returns to
the VFS layer are error messages.  It handles no IO operations whatsoever.
Peter Anvin has called using the automounter for removeable media "abuse."
Submount is designed for it.</quote> H. Peter Anvin replied:</p>

<quote who="H. Peter Anvin">

<p>Sure, but it's not clear to me that you have listened to me saying *why*
it is abuse.</p>

<p>Basically, in my opinion removable media should be handled by insert
and removal detection, not by access detection.  Obviously, there are some
sticky issues with that in the case where media can be removed without notice
(like PC floppies or other manual-eject devices), but overall I think that
is the correct approach.</p>

</quote>

<p>Eugene explained:</p>

<quote who="Eugene Weiss">

<p>I managed to read several of your warnings about using autofs for media
without coming across an explanation of why.  I just assumed that as
maintainer, you had good reasons to do so.  I more-or-less agree with you
about the desirability of insert and removal detection.  I'm not sure if it
could ever be made to work for floppies, but there is no reason why one
solution should fit all cases.  If there were common ioctls which could check
the insertion and removal status of the various drives, I might have taken
that approach.</p>

<p>I wanted to get the same functionality as supermount without the instability,
and as far as I can tell, I have succeeded.  It's not ideal, but it works for
me, and hopefully will work for others as well until something better is
produced.</p>

</quote>

</section>

<section
  title="Layer-7 Filter For Linux QoS"
  subject="[ANNOUNCE] Layer-7 Filter for Linux QoS"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0305.2/0439.html"
  posts="1"
  startdate="18 May 2003 18:23:45 -0800"
>
<topic>Networking</topic>

<p>Ethan Sommer announced:</p>

<quote who="Ethan Sommer">

<p>We have written a filter for the QoS infrastructure that looks at the data
segment of packets and uses regular expressions to identify the protocol of
a stream of traffic regardless of port number.</p>

<p>Many peer-to-peer programs (such as Kazaa and Gnucleus) will change to use
a different port (including well known ports such as, say, 80) if they find
that they can get better throughput there. That means that the port based
filtering is no longer sufficient. However, by analyzing the application
layer data, we can differentiate Kazaa from non-Kazaa HTTP, and lower the
priority of whichever we deem to be less important. :)</p>

<p>It is a filter in the existing QoS infrastructure, so it can be used
in conjunction with u32 filters, HTB or CBQ scheduling, SFQ queueing etc,
etc...</p>

<p>Commercial companies sell devices which do layer-7 classification for
anywhere from $6000-$80,000 depending on the bandwidth required. If we can
build a comprehensive set of patterns I don't see any reason why Linux can't
beat the pants off the commercial devices; we already have excellent queueing,
and scheduling.</p>

<p>Our home page is <a
href="http://l7-filter.sourceforge.net/">http://l7-filter.sourceforge.net/</a>
but if you want to skip right to the downloads go to <a
href="http://sourceforge.net/projects/l7-filter/">http://sourceforge.net/projects/l7-filter/</a>
(there is a kernel patch, a patched version of tc, and some sample patterns
for HTTP, POP3, IMAP, SSH, Kazaa, and FTP.) You'll notice the patch is a
somewhat large, most of that is regexp code.</p>

<p>We're still working on it. It currently only does TCP for example... Do
you guys/gals have any comments/suggestions/etc? I suspect that this is a
post 2.6 thing, but it is very non-invasive (it only adds approx. 2 lines
of code that would affect anything if the user were not using the layer-7
filters,) so I still have a little bit of hope.</p>

</quote>

</section>

<section
  title="QLogic qla2xxx Driver Update Released"
  subject="[ANNOUNCE] QLogic qla2xxx driver update available (v8.00.00b2)."
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0305.2/0679.html"
  posts="1"
  startdate="19 May 2003 14:57:28 -0800"
>
<topic>Hot-Plugging</topic>

<p>Andrew Vasquez announced:</p>

<quote who="Andrew Vasquez">

<p>A new version of the 8.x series driver for Linux 2.5.x kernels has
been uploaded to SourceForge:</p>

<p><a href="http://sourceforge.net/projects/linux-qla2xxx/">http://sourceforge.net/projects/linux-qla2xxx/</a></p>

<p>In addition to the standard kernel-tree and external build tar-balls,
a patch file is provided to update v8.00.00b1 sources to v8.00.00b2.</p>

<p>Changes include:</p>

<p>

<ul>

<li>Add support for new 'Hotplug initialization' model.</li>
<li>Simplify host template by removing unused callbacks.</li>
<li>Use scsicam facilities to determine geometry.</li>
<li>Fix compilation issues for non-ISP23xx builds:</li>
<ul>
  <li>Correct register references in qla_dbg.c. </li>
  <li>Correct Makefile build process.</li>
</ul>
<li>Simplify dma_addr_t handling during command queuing given
  new block-layer defined restrictions:</li>
<ul>
  <li>Physical addresses not spanning 4GB boundaries.</li>
</ul>
<li>Resync with 2.5.69-bk8.</li>

</ul>

</p>

</quote>

</section>

<section
  title="New wiggle Tools For Applying Patches With Conflicts"
  subject="ANNOUNCE: wiggle - a tools for applying patches with conflicts"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0305.2/0762.html"
  posts="2"
  startdate="19 May 2003 19:22:06 -0800"
  enddate="19 May 2003 20:15:20 -0800"
>

<mention>Andrew Morton</mention>

<p>Neil Brown announced:</p>

<quote who="Neil Brown">

<p>I am pleased to announce the first public release of 'wiggle'.</p>

<p>Wiggle is a program for applying patches that 'patch' cannot
apply due to conflicting changes in the original.</p>

<p>Wiggle will always apply all changes in the patch to the original.
If it cannot find a way to cleanly apply a patch, it inserts it
in the original in a manner similar to 'merge', and report an
unresolvable conflict.  Such a conflict will look like:</p>

<pre>&lt;&lt;&lt;&lt;&lt;&lt;&lt;
Some text from
the original file
|||||||
Some text that the patch changes
=======
Some text that is the result of the patch
&gt;&gt;&gt;&gt;&gt;&gt;&gt;</pre>

<p>with the meaning that the "text that the patch
changes" was expected somewhere in the "text from the original
file" and should be replaced with "the result of the patch".</p>

<p>wiggle analyses the file and the patch in terms of words rather than
whole lines and so is able to find matches that patch is
unable to find.  If a patch changes a word at the end of a line, and  
a word at the start of that line has been modified since the patch
was made, then wiggle will have no trouble applying the patch.</p>

<p>wiggle has proved very useful for back-porting patches that were
generated for the development kernel, onto the stable kernel.
Sometimes it does exactly the right thing with the patch.  When it doesn't
it reports a conflict which is easy to resolve with an understanding of
what the code and the patch were trying to achieve.</p>

<p>Wiggle is available under the GPL and can be fetched from:</p>

<p><a href="http://www.cse.unsw.edu.au/~neilb/source/wiggle/">http://www.cse.unsw.edu.au/~neilb/source/wiggle/</a></p>

<p>The name 'wiggle' was inspired by Andrew Morton's comment:</p>

<blockquote>

<p>   The problem I find is that I often want to take<br />
     (file1+patch) -&gt; file2,<br />
   when I don't have file1.  But merge tools want to take<br />
     (file1|file2) -&gt; file3.<br />
   I haven't seen a graphical tool which helps you to wiggle a patch
   into a file.</p>

</blockquote>

<p>which google can find for you: <a
href="http://www.google.com/search?q=graphical+tool+which+helps+you+to+wiggle+a+patch">http://www.google.com/search?q=graphical+tool+which+helps+you+to+wiggle+a+patch</a></p>

<p>It isn't a graphical tool, but it is a good first step.</p>

<p>NOTES:</p>

<p>This release contains a 'tests' directory with a number of test cases
that have proved invaluable in developing the program and my
understanding of the subtleties of some of the issues involved.  If you
find a case where wiggle behaves sub-optimally (e.g. dumps core),
please consider sending me a test case to add to the tests directory.</p>

<p>This release also contains a script 'p' and accompanying 'p.help'.
This is a script that I use for patch management for my kernel patches
and it makes use of wiggle to allow me to apply patches that
'patch' cannot manage.  It is included both as an example of
how wiggle can be used, and as a tool that some might find useful.</p>

<p>One shortcoming I find with wiggle is that I would like to be able
to 'see' what it has done.  I would love it if someone were to write
a program that allowed the results of wiggle to be visualised.
The closest that I have come to imagining a workable UI is to
have two side-by-side windows, one of which shows the original patch,
and the other shows a "diff -u" of before and after wiggle has done it's
thing, and to have these windows automatically aligned so that when
a change is shown in one, the corresponding change appears in the other.
Maybe something like tkdiff, but that knows about patches and knows
about word-based diffs....</p>

<p>Wiggle is also able to perform a function similar to 'diff' and show the
differences and similarities between two files.  It can show these differences
and similarities at a word-by-word level.  The output format is not machine
readable as the character sequences used to delimit inserted and deleted
words are not quoted in the output.  Hence this format will probably change
at some stage and should not be depended upon.</p>

<p>If you read the source, beware of comments: they were probably written
while I was still trying to understand the issues myself, and so are
probably wrong and out-of-date.  I would like to review all the code and
comments, but if I wait until I do that before releasing it, it'll never
get released!</p>

</quote>

</section>

</kc>

