Ross Lagerwall's blog

[ Home | Blog home | RSS 2.0 | ATOM 1.0 ]

Sat, 24 Jan 2015

GVFS Support for NFS

The last few months I've been working on support for NFS in GVFS, using libnfs. This will finally allow GNOME users to mount NFS shares as easily as Windows (SMB) shares can be mounted, no root access required.

The backend is written to use the asynchronous API of libnfs which allows for multiple outstanding requests to be in flight. Although it is not yet implemented, this will allow GVFS to achieve line rate throughput for copy operations whereas at the moment, it gets about 70% of the potential throughput due to latency and other overheads.

Unfortunately, while some methods like truncate are simple because they map directly to the libnfs API, using the asynchronous API does make the methods which require multiple operations rather complicated. Enumerate is a good example of this since fetching all the data requires for each entry:

Currently, these operations are all done sequentially but in the future these can be done in parallel to speed up enumeration.

This effort has resulted in a few improvements to libnfs as well:

Progress of this work can be followed at with the code available in the GVFS git repository in the nfs branch.

posted at: 23:12 | path: /computer | permanent link to this entry

Any opinions expressed here are my own and do not in any way reflect the opinions of my employer, or anyone else.

Made with Pyblosxom