NFSv4 client finally merged

Blog post by Paweł Dziepak on Fri, 2013-03-15 17:09

Earlier this week NFSv4 client I have been working on during the last year Google Summer of Code has been merged into the main Haiku repository and is now available in nightly images. The client supports all caching mechanisms available in the version 4 of NFS what means that it can get the most out of network connection and the server. Unfortunately due to limitations of the NFS protocol itself extended attributes are not supported yet.

In order to mount a NFS share you need to type the following command:

mount -t nfs4 -p "server_address:path flags" directory

server_address may be either an IP address or a host name. Flags are optional, the default configuration should be appropriate in most cases and should be changed only if problems appear. The available flags are:

  • hard - if no valid reply to a RPC request was received the request is retried indefinitely.
  • soft - if no valid reply to a RPC request was received the request is retried no more than retrans times. This is set by default.
  • timeo=X - request time limit before next retransmission (default: 60 seconds).
  • retrans=X - retry requests X times (default: 5).
  • ac - use metadata cache (enabled by default).
  • noac - do not use metadata cache.
  • port=X - connect to port X (default: 2049).
  • proto=X - use transport protocol X. UDP and TCP are available. If this flag is not specified TCP is used. Note that some servers does not support open delegations if the client connects via UDP what may reduce performance.

Since the NFS client requires now much less attention than earlier, I have concentrated on data execution prevention (DEP) and address space layout randomization (ASLR). This two features when enabled will make exploiting vulnerabilities in any Haiku application significantly harder.


Re: NFSv4 client finally merged

This is great news. You're a good developer.

Re: NFSv4 client finally merged

Thank you for this!

Re: NFSv4 client finally merged

NSF is nice, but where is the BFS network file system? It is more important to me to share files between Haiku computers (with their BFS attributes ) than sharing files with some other operating system.

We need a BFS network file system server and client for Haiku.

Re: NFSv4 client finally merged

This networked Haiku native file system exists. Ingo Weinhold wrote it. Would be nice if someone found the time to write a tutorial about it. It requires multiple steps to get setup, since it requires userlandfs. But when it works, its nice with graphical login and all.

Re: NFSv4 client finally merged

Fantastic, this is great news! Access to network shares has been keeping me from using Haiku as my home desktop for general use.

Re: NFSv4 client finally merged

Hi Paweł,

I think there might be a problem with .dot files. I have finally managed to configure an NFS4 server on my Ubuntu box. I am exporting my home directory. I can mount this export on Haiku just fine, it instantly appears on the Desktop as a shared network mount (reminds me I or someone else needs to design a HVIF icon for shares...). I can cd into the mount point and for example ls -la the contents. But when I try to double click the share to open it in Tracker, I land in KDL, the stack trace indicates it tries to stat a .dot file or folder (for example ".ssh" or ".config"). When I use the Terminal to cd somewhere into my home folder where there are no .dot files, I can use "open ." to open the folder in Tracker. This works just fine and I can navigate into sub-folder from there (I only tried ones without .dot files). I don't know if this really has to do with .dot files or not. Maybe it would be easiest if you try to replicate this setup on your end, trying to mount some folder with lots of .dot folders. Otherwise I can try to help debug this. With how my USB keyboard is connected, I am having trouble doing anything useful in KDL, but if you say it would be helpful, I will do the necessary dive under the table... Thanks for your work on NFS4 in any case, it is really great to have this option to connect to shared files!