Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Nov 1999 13:45:51 -0500 (EST)
From:      Erez Zadok <ezk@cs.columbia.edu>
To:        Mats Lofkvist <mal@algonet.se>
Cc:        ezk@cs.columbia.edu, freebsd-fs@FreeBSD.org
Subject:   Re: stupidfs - easily extensible test file systems? 
Message-ID:  <199911011845.NAA02285@shekel.mcl.cs.columbia.edu>
In-Reply-To: Your message of "Mon, 01 Nov 1999 16:52:34 %2B0100." <199911011552.QAA19191@kairos.algonet.se> 

next in thread | previous in thread | raw e-mail | index | archive | help
In message <199911011552.QAA19191@kairos.algonet.se>, Mats Lofkvist writes:
> 
>    > And does anyone know if this has a chance being a standard part
>    > of FreeBSD, and how it relates to the general cleanup of the
>    > stacking fs code that seem to be on the "todo sometime in the
>    > future" list for FreeBSD?
> 
>    What do you mean by "this"?  My code will be fixed soon.  The problem
>    is that I'm forced to use synchronous writes to work around the VFS
>    problems.  I don't expect the VFS to be fixed any time soon.  It's been
>    broken for a long time and there aren't too many "customers"
>    complaining about it, or it would have been fixed by now.  It just
>    doesn't appear to be a high priority for the freebsd developers.  I
>    think it's too late for 3.x, but now would be a good time for freebsd
>    to put those fixes into 4.0, before it becomes the default stable
>    version.
> 
> (My limited VFS knowledge shows here, but what the heck..)
> 
> What I wondered was if fist/wrapfs helps cleaning up the FreeBSD VFS code,
> is only using it as is, or if it is incompatible with what the FreeBSD
> architects have in mind.
> 
> I.e. is it a good idea to build a new FreeBSD filesystem using wrapfs?

Yes.  That's the premise of my Ph.D. work:

(1) I provide you with stackable templates that do not change the VFS, do
    not change anything else in the OS, and do not modify lower level file
    systems (FFS, NFS, etc.)  That way, when my templates are not in use,
    the performance of the rest of the system remains the same (which was
    not true for past stackable vnode interface works).

(2) My wrapfs templates use the VFS as is.  That was an important goal for
    me, knowing full well that requiring any significant changes to the VFS
    will never be accepted by any OS vendor.  Requiring big changes was one
    reason why all the work done by Sun and UCLA is not available in modern,
    common OSs; no one wants to rewrite the VFS and all file systems to
    conform to a new "real" stackable interface.

(3) The wrapfs templates export a simple API that's similar across different
    OSS.  I have templates for FreeBSD, Linux, and Solaris.  When an OS
    makes small changes to their VFS, I update the wrapfs templates as
    needed.  People who used wrapfs as a basis for another file system don't
    have to worry too much about kernel internals.

Creating the wrapfs templates was the first half of my Ph.D. work.  The
second half is the creation of a high level stackable f/s language, which I
call FiST.  Fistgen, the language translator, uses wrapfs templates and f/s
descriptions to produce f/s modules automatically for your choice OS.

That's a summary of things.  If you want more details, I'll be happy to
provide them.  You can also read my USENIX'99 paper titled "Extending File
Systems Using Stackable Templates", available in

	http://www.cs.columbia.edu/~ezk/research/

Also, there's a WIP paper on FiST in

	http://www.cs.columbia.edu/~ezk/research/wip.html

Now, going back to FreeBSD: I didn't want to change the FreeBSD VFS, so I
worked around it.  I used synchronous writes to "solve" the backing-object
problem.  The result was a wrapfs template that is slower due to all those
synchronous writes, but at least it works (unlike nullfs and unionfs).  When
the FreeBSD VFS is fixed, I will produce updated wrapfs templates that don't
need synchronous writes.  After that, you'd have to port your diffs from the
old wrapfs template to the new one (that could be automated using a 3-way
diff).  If fistgen is out by then, using new templates would be as easy as
rerunning fistgen on your existing ".fist" file.

> Mats Lofkvist
> mal@algonet.se

Erez.


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-fs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199911011845.NAA02285>