From 03aeae6ecae93a0dab64916690ce615c9527a36f Mon Sep 17 00:00:00 2001 From: Stanislav Kinsbursky Date: Thu, 6 Dec 2012 14:23:14 +0300 Subject: [PATCH] --- yaml --- r: 347718 b: refs/heads/master c: 2c2fe2909e124c32a34dbbb3ac129112524fc540 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/nfsd/netns.h | 2 ++ trunk/fs/nfsd/nfssvc.c | 12 ++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index ecc365f01739..663e1bd2f05e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6ff50b3dea9a242b50642a703b513986bffb8ce9 +refs/heads/master: 2c2fe2909e124c32a34dbbb3ac129112524fc540 diff --git a/trunk/fs/nfsd/netns.h b/trunk/fs/nfsd/netns.h index fac4123c918c..543ac486fd5d 100644 --- a/trunk/fs/nfsd/netns.h +++ b/trunk/fs/nfsd/netns.h @@ -92,6 +92,8 @@ struct nfsd_net { time_t nfsd4_lease; time_t nfsd4_grace; + + bool nfsd_net_up; }; /* Simple check to find out if a given net was properly initialized */ diff --git a/trunk/fs/nfsd/nfssvc.c b/trunk/fs/nfsd/nfssvc.c index 038348bc1a09..6e17efdd8afe 100644 --- a/trunk/fs/nfsd/nfssvc.c +++ b/trunk/fs/nfsd/nfssvc.c @@ -21,6 +21,7 @@ #include "nfsd.h" #include "cache.h" #include "vfs.h" +#include "netns.h" #define NFSDDBG_FACILITY NFSDDBG_SVC @@ -205,8 +206,12 @@ static bool nfsd_up = false; static int nfsd_startup_net(struct net *net) { + struct nfsd_net *nn = net_generic(net, nfsd_net_id); int ret; + if (nn->nfsd_net_up) + return 0; + ret = nfsd_init_socks(net); if (ret) return ret; @@ -217,6 +222,7 @@ static int nfsd_startup_net(struct net *net) if (ret) goto out_lockd; + nn->nfsd_net_up = true; return 0; out_lockd: @@ -257,8 +263,14 @@ static int nfsd_startup(int nrservs, struct net *net) static void nfsd_shutdown_net(struct net *net) { + struct nfsd_net *nn = net_generic(net, nfsd_net_id); + + if (!nn->nfsd_net_up) + return; + nfs4_state_shutdown_net(net); lockd_down(net); + nn->nfsd_net_up = false; } static void nfsd_shutdown(struct net *net)