TDFS ... or other distributed file system technologies for FreeBSD?

Greg Troxel gdt at ir.bbn.com
Wed Mar 28 13:01:07 UTC 2007


Ivan Voras <ivoras at fer.hr> writes:

> Marc G. Fournier wrote:
>
>> I'm just wondering if it would be time better spent polishing off
>> the FUSE implementation and pushing that for now, get ppl deploying
>> it, testing it, etc ... and then work on the 'performance enhanced
>> kernel module'?
>
> If time to deployment is in question, TDFS is the way to go, and this
> would be what I prefer. Another idea of mine for this is that maybe they
> could be made compatible in the network protocol... lots of ideas,
> little time.

I've been playing with Coda for a long time, originally in FreeBSD
2.2, 3 and 4, and more recently in NetBSD.  My problems have been all
correctness issues, both in coda's handling of conflicts and in the
kernel vfs locking code.  Coda has not yet worked reliably enough that
I've been worried about performance.  Once you put a network and
another system in the path, the round trip to user space is not that
big a deal.

It is truly hard to get the vfs locking issues right (lock one vnode,
release another, do it in the right order, reference counts, follow
the rules exactly).  FUSE should (and probably is) taking care of this
for you.

So, I'd go for FUSE, and I think it will be a long time before
performance is a big issue.

>> Then again, from the other side of the coin ... what are the
>> chances that a kernel module would get into the main stream
>> distribution vs the FUSE module?
>
> Since FUSE is (L)GPL'ed, chances of getting it into base are
> slim. Then there's the question of who would be responsible for it,
> since the developer of the FUSE BSD module was also a SoC student
> and I don't know if he's interested in maintaining it that way -
> I'll go ask him.

The other thing people could do is import puffs and librefuse from
NetBSD (also originally an SoC project).  puffs is like FUSE, but aims
to be a richer interface.  librefuse uses puffs to provide a
FUSE-compatible interface, so you can run FUSE filesystems linked
against librefuse, and there's no GPL/LGPL code in the base system.

puffs is not yet mature; it's not even included in the build of
NetBSD-current unless you put MKPUFF=yes in mk.conf.  But I've run a
puffs ssh filesystem under it, and a FUSE http filesystem, and it's
mostly stable.

Porting it to FreeBSD should mostly be straightforward, but I think
the VFS locking rules have diverged, particularly in how .. locking is
handled in vfs_lookup.  So making puffs work in FreeBSD will require
cycles from someone who groks the vfs layer.

PUFFS(3)                NetBSD Library Functions Manual               PUFFS(3)

NAME
     libpuffs -- Pass-to-Userspace Framework File System development interface
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 185 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-fs/attachments/20070328/5c05c216/attachment.pgp


More information about the freebsd-fs mailing list