nfsd: Containerise filecache laundrette
Ensure that if the filecache laundrette gets stuck, it only affects the knfsd instances of one container. The notifier callbacks can be called from various contexts so avoid using synchonous filesystem operations that might deadlock. Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:

committed by
J. Bruce Fields

parent
36ebbdb96b
commit
9542e6a643
@@ -400,13 +400,18 @@ static int nfsd_startup_net(int nrservs, struct net *net, const struct cred *cre
|
||||
nn->lockd_up = true;
|
||||
}
|
||||
|
||||
ret = nfs4_state_start_net(net);
|
||||
ret = nfsd_file_cache_start_net(net);
|
||||
if (ret)
|
||||
goto out_lockd;
|
||||
ret = nfs4_state_start_net(net);
|
||||
if (ret)
|
||||
goto out_filecache;
|
||||
|
||||
nn->nfsd_net_up = true;
|
||||
return 0;
|
||||
|
||||
out_filecache:
|
||||
nfsd_file_cache_shutdown_net(net);
|
||||
out_lockd:
|
||||
if (nn->lockd_up) {
|
||||
lockd_down(net);
|
||||
@@ -421,7 +426,7 @@ static void nfsd_shutdown_net(struct net *net)
|
||||
{
|
||||
struct nfsd_net *nn = net_generic(net, nfsd_net_id);
|
||||
|
||||
nfsd_file_cache_purge(net);
|
||||
nfsd_file_cache_shutdown_net(net);
|
||||
nfs4_state_shutdown_net(net);
|
||||
if (nn->lockd_up) {
|
||||
lockd_down(net);
|
||||
|
Reference in New Issue
Block a user