NFSv4 client: final report

Blog post by Paweł Dziepak on Sun, 2012-08-26 18:46

Since three quarter term I've added NFS-level support for named attributes what means that virtually all important NFS version 4 feature are now implemented, as I described them in my blog posts during the coding period. What still needs to be done is to improve support of Haiku's extended attributes and a lot of bugfixing. There is also a room for performance improvement and several possibilities to organize code in a better way.

Currently, NFSv4 client supports both read and write operations, file locks and various caches (some of which can be disabled). In addition to that there is named attribute support code and extended attribute emulation implemented. However, in order to have extended attributes fully working regardless whether the server supports them or not some work still needs to be done.

I will continue to maintain NFSv4 client code, though, I won't spend as much time on it as I did this summer. Firstly, I want to separate NFS and RPC code as soon as possible (but not before all major bugs are fixed). This should not be to difficult, since very beginning I tried not to mix NFS and RPC code. There are few places that will need some refactoring, though. In addition to that I want to prepare current code for NFSv4.1 support. That will require several changes that will improve general code quality and will make their job easier for anyone attempting to implement minor version 1 (probably me), or any later one.

While in general current client takes advantage of almost all caching possibilities described in NFS specification it could however release some acquired shares earlier and make it easier for other clients of the same NFS server and locking requests could be simplified when the client holds an open delegation. Moreover, implementing minor version 1 of the protocol will make additional caching mechanizms available.

Summing this up, the most important now is to fix as much bugs as possible, then I would like to change code organization a bit and prepare it for new features that newer versions of NFS may bring.

Comments

Re: NFSv4 client: final report

Paweł, thank you so much for your hard work! Hopefully your branch can be merged ASAP. I would love to make some changes to the computer infrastructure in my home to put all my media files onto an NFS server. Currently, I have most all of it on a Haiku volume. The files have tons of extended attributes to make the library nicely searchable from within Haiku. Is the attribute support far enough along that those would not be lost when transfering onto NFS from within Haiku?

Re: NFSv4 client: final report

I'm not certain about this but since NFS is backed by a separate filesystem you wouldn't loose any data as long as it was read only... but if you copied files in or modified a file over NFS you might.

Re: NFSv4 client: final report

Nice, another nice feature for Haiku. Thanks for this sucessful GSOC project Pawel (all GSOC projects turned out successful this year?), really glad to hear you will continue to work on this as time permits, and then there's always next years GSOC. Again thanks!

Re: NFSv4 client: final report

Rox wrote:

(all GSOC projects turned out successful this year?)

Later today or tomorrow, I'll be posting the wrap up report. But yes, all five students passed their final evaluations!