[haiku-development] NFSv4 client status

  • From: Pawel Dziepak <pdziepak@xxxxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Thu, 14 Feb 2013 19:59:40 +0100

Hello

I'd like to inform you about NFSv4 client status. I've spent several
past weeks trying to make it much more stable than it was at the end
of August. As a result bonnie++ (the benchmark that I used for
testing) completes without any crashes or errors. In addition to that
I also ran some minor tests to check file system features that
bonnie++ does not uses (file locking, restarting server, etc) and
everything seems to be working correctly. That's why I think it is a
good time to merge it into the trunk.

Of course there are still many things to be done. First of all
extended attributes are not supported too well. The main reason for
that is that the only NFSv4 feature that is similar to them (and can
be used to emulate them), so-called 'named attributes' are optional
and the client has no guarantee that the server supports them.
Unfortunately, NFS server in Linux, which I reckon will be the most
common server among Haiku users does not implement named attributes at
all (regardless of the capabilities of the underlying file system).
There are some other, far from perfect, ways to emulate extended
attributes but I don't really think it should delay the merge.

There is also a room for improvement in NFS4 client performance. All
the 'big things' like open delegations, (meta)data caching, etc are
implemented and working, but some minor optimizations are not yet done
(e.g. merging two requests that we know will be sent together).

Finally, though I am not thinking about implementing NFS 4.1 yet, it
may be good to do some preparations early. Particularly completely
separating NFS4 and RPC code, it shouldn't be hard because I tried to
write it in such way in the first place. NFS4 client directory does
not seem to be a good place for RPC code.

In summary, NFS4 client seems stable enough to let other people use it
and test it. There is still some work to do (extended attributes, some
improvements) but there always will be some work to do (like
implementing NFS v4 minor version n+1) and I don't think it should
prevent NFSv4 client from becoming a part of Haiku.

Paweł

PS All tests I mentioned were done after merging nfs4 branch with
hrev45280 (no conflicts except trivial build/jam/HaikuImage one) on
gcc2 x86, gcc4 x86 and gcc4 x86_64 builds. As a server I used mostly
Linux but did also some less thorough tests using FreeBSD and Solaris
servers.

Other related posts: