[ Home | Blog home | RSS 2.0 | ATOM 1.0 ]
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:
stat
call if the item is a symbolic link,access
to query if the item is readable, writable
or executable.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:
access2
to get the status of R_OK, W_OK and X_OK all
at once.lstat
, lutimes
, etc, which work
on symbolic links rather than what they point to.stat
and directory listing calls.O_EXCL
and
O_TRUNC
.Progress of this work can be followed at https://bugzilla.gnome.org/show_bug.cgi?id=738967 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.