Subject: puffs - userspace fs framework integration
To: None <tech-kern@netbsd.org>
From: Antti Kantee <pooka@cs.hut.fi>
List: tech-kern
Date: 10/10/2006 20:43:36
I recently picked up my GSoC 2005 project (yea, 2005, some things
take time ...) and beat it into a shape which I consider acceptable
for an integration proposal.  I've tested the framework by writing an
in-memory file system with performance comparable to tmpfs (slower only
by a factor of n^2+1) on top of it.

It works for untarring, reading, writing, linking, symlinking and
other normal file system use.  The speed isn't yet very impressive,
but I plan to work on that in the coming weeks.  Run-time stability is
good judging on my experiments, but there are still some problems if the
userspace counterpart decides to get bored with living (kernel handles
that fine most of the time, though).  If userland decides to play evil,
all bets are off.  This is yet another future work area on my TODO-list.
So as a summary, it's one of those "don't put it on a space shuttle"-types
of software for the time being.

The interfaces aren't guaranteed to be stable either, but getting this
in-tree will enable interested parties to play with it more easily.
I've had several people asking about this, but I don't anyone besides
me that has actually run the code since the setup is annoying (plus,
the code hasn't really worked that reliably until very recently, but
that's only a bad excuse to not run something ;).

The framework consists of a kernel attachment to the virtual file system
layer and a library through which the framework is meant to be used.
Mostly it is there to hide the user-kernel transport from the user but
also to provide some helper routines for people writing file systems.

I plan to commit the kernel code under src/sys/miscfs/puffs and the
library under src/lib/libpuffs.  "The documentation for the library
is forthcoming".  The in-memory file system, detrempefs, will probably
go under share/examples and/or into pkgsrc.

Note, that to use this code, you must compile your kernel with
file-system PUFFS
and you must mount a puffs file system.  It will therefore neither bloat
nor crash your system unless you want it to (well, crashing might
not completely be up to only your wanting .... ;).

The source code is available under the NetBSD SoC web page:
http://netbsd-soc.sourceforge.net/projects/userfs/src/
see also the more verbose and only slightly out of date ramblings at:
http://netbsd-soc.sourceforge.net/projects/userfs/


thank you for your continued cooperation.


	FAQ:

* Why's it called puffs?

  Pass-to-Userspace Framework File System

* No, seriously?

  see Le Cordon Bleu Complete Cooking Techniques, page 304

* Ok, what about detrempefs them?

  there's an old saying: can't make puff pastry without making a detrempe


-- 
Antti Kantee <pooka@iki.fi>                     Of course he runs NetBSD
http://www.iki.fi/pooka/                          http://www.NetBSD.org/
    "la qualité la plus indispensable du cuisinier est l'exactitude"