diff options
author | 2012-12-06 18:34:42 +0300 | |
---|---|---|
committer | 2012-12-10 16:25:42 -0500 | |
commit | 88c47666171989ed4c5b1a5687df09511e8c5e35 (patch) | |
tree | f5b12c2c7f8b247f875203d399545fbd3a5527ec /fs/nfsd/nfssvc.c | |
parent | nfsd: simplify service shutdown (diff) | |
download | linux-88c47666171989ed4c5b1a5687df09511e8c5e35.tar.gz linux-88c47666171989ed4c5b1a5687df09511e8c5e35.tar.bz2 linux-88c47666171989ed4c5b1a5687df09511e8c5e35.zip |
nfsd: pass proper net to nfsd_destroy() from NFSd kthreads
Since NFSd service is per-net now, we have to pass proper network
context in nfsd_shutdown() from NFSd kthreads.
The simplest way I found is to get proper net from one of transports
with permanent sockets.
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/nfssvc.c')
-rw-r--r-- | fs/nfsd/nfssvc.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c index 2cfd9c69503e..cee62ab9d4a3 100644 --- a/fs/nfsd/nfssvc.c +++ b/fs/nfsd/nfssvc.c @@ -541,6 +541,8 @@ static int nfsd(void *vrqstp) { struct svc_rqst *rqstp = (struct svc_rqst *) vrqstp; + struct svc_xprt *perm_sock = list_entry(rqstp->rq_server->sv_permsocks.next, typeof(struct svc_xprt), xpt_list); + struct net *net = perm_sock->xpt_net; int err; /* Lock module and set up kernel thread */ @@ -605,7 +607,7 @@ out: /* Release the thread */ svc_exit_thread(rqstp); - nfsd_destroy(&init_net); + nfsd_destroy(net); /* Release module */ mutex_unlock(&nfsd_mutex); |