Skip to contentSkip to conversation

NFSv4 and NFSv4.1 client recovery

DISCUSSION DENIEL Philippe 2 participants 2 messages Mar 15, 2011

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hi,

as you may know, I am working on a NFS server in user space called nfs-ganesha. One of the feature of nfs-ganesha is its capability of being used as a NFSv4 proxy. This is implemented as a backend in nfs-ganesha : all the filesystem that nfs-ganesha can export have a dedicated module with a well known API (this module is called FSAL for File System Abstraction layer). The proxy feature is made by make a FSAL library that is a NFSv4 basic client (each of the FSAL functions calls wrap one or more NFSv4 request). The trouble is the case when the remote server (the one accessed by the proxy operating as a client via FSAL calls) crashes : the client inside the FSAL needs to recover to the remote server as it comes back to work. My question is : what is the simpliest way for my user space client to recover ? I must precise it make no delegation and use only a forechannel to the remote server. There is no backchannel.

Regards

Philippe

#1 lore raw
Quoted 16 lines · DENIEL Philippe

Hi,

as you may know, I am working on a NFS server in user space called nfs-ganesha. One of the feature of nfs-ganesha is its capability of being used as a NFSv4 proxy. This is implemented as a backend in nfs-ganesha : all the filesystem that nfs-ganesha can export have a dedicated module with a well known API (this module is called FSAL for File System Abstraction layer). The proxy feature is made by make a FSAL library that is a NFSv4 basic client (each of the FSAL functions calls wrap one or more NFSv4 request). The trouble is the case when the remote server (the one accessed by the proxy operating as a client via FSAL calls) crashes : the client inside the FSAL needs to recover to the remote server as it comes back to work. My question is : what is the simpliest way for my user space client to recover ? I must precise it make no delegation and use only a forechannel to the remote server. There is no backchannel.

I suppose you could either try to do the recovery yourself on the proxy, or pass back the STALE errors to the original client and make it drive the recovery. Maybe either way will work?

If you did the latter then I suppose your API would have to support allowing proxy module to report a reboot, and allow passing reclaims down.

I dunno.

--b.