diff options
author | Stanislav Kinsbursky <skinsbursky@parallels.com> | 2012-12-06 10:34:42 -0500 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2012-12-10 16:25:42 -0500 |
commit | 88c47666171989ed4c5b1a5687df09511e8c5e35 (patch) | |
tree | f5b12c2c7f8b247f875203d399545fbd3a5527ec | |
parent | 541e864f00d0062c98c1e743265b0a60cada3755 (diff) |
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>
-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 | |||
541 | nfsd(void *vrqstp) | 541 | nfsd(void *vrqstp) |
542 | { | 542 | { |
543 | struct svc_rqst *rqstp = (struct svc_rqst *) vrqstp; | 543 | struct svc_rqst *rqstp = (struct svc_rqst *) vrqstp; |
544 | struct svc_xprt *perm_sock = list_entry(rqstp->rq_server->sv_permsocks.next, typeof(struct svc_xprt), xpt_list); | ||
545 | struct net *net = perm_sock->xpt_net; | ||
544 | int err; | 546 | int err; |
545 | 547 | ||
546 | /* Lock module and set up kernel thread */ | 548 | /* Lock module and set up kernel thread */ |
@@ -605,7 +607,7 @@ out: | |||
605 | /* Release the thread */ | 607 | /* Release the thread */ |
606 | svc_exit_thread(rqstp); | 608 | svc_exit_thread(rqstp); |
607 | 609 | ||
608 | nfsd_destroy(&init_net); | 610 | nfsd_destroy(net); |
609 | 611 | ||
610 | /* Release module */ | 612 | /* Release module */ |
611 | mutex_unlock(&nfsd_mutex); | 613 | mutex_unlock(&nfsd_mutex); |