Commit 19f7e2ca44dfc3c1b3f499fc46801f98d403500f
Committed by
J. Bruce Fields
1 parent
a007c4c3e9
Exists in
smarc-l5.0.0_1.0.0-ga
and in
5 other branches
NFSd: introduce nfsd_destroy() helper
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Showing 3 changed files with 14 additions and 17 deletions Side-by-side Diff
fs/nfsd/nfsctl.c
... | ... | @@ -673,9 +673,7 @@ |
673 | 673 | |
674 | 674 | err = svc_addsock(nfsd_serv, fd, buf, SIMPLE_TRANSACTION_LIMIT); |
675 | 675 | if (err < 0) { |
676 | - if (nfsd_serv->sv_nrthreads == 1) | |
677 | - svc_shutdown_net(nfsd_serv, net); | |
678 | - svc_destroy(nfsd_serv); | |
676 | + nfsd_destroy(net); | |
679 | 677 | return err; |
680 | 678 | } |
681 | 679 | |
... | ... | @@ -744,9 +742,7 @@ |
744 | 742 | svc_xprt_put(xprt); |
745 | 743 | } |
746 | 744 | out_err: |
747 | - if (nfsd_serv->sv_nrthreads == 1) | |
748 | - svc_shutdown_net(nfsd_serv, net); | |
749 | - svc_destroy(nfsd_serv); | |
745 | + nfsd_destroy(net); | |
750 | 746 | return err; |
751 | 747 | } |
752 | 748 |
fs/nfsd/nfsd.h
... | ... | @@ -75,6 +75,15 @@ |
75 | 75 | int nfsd_pool_stats_open(struct inode *, struct file *); |
76 | 76 | int nfsd_pool_stats_release(struct inode *, struct file *); |
77 | 77 | |
78 | +static inline void nfsd_destroy(struct net *net) | |
79 | +{ | |
80 | + int destroy = (nfsd_serv->sv_nrthreads == 1); | |
81 | + | |
82 | + if (destroy) | |
83 | + svc_shutdown_net(nfsd_serv, net); | |
84 | + svc_destroy(nfsd_serv); | |
85 | +} | |
86 | + | |
78 | 87 | #if defined(CONFIG_NFSD_V2_ACL) || defined(CONFIG_NFSD_V3_ACL) |
79 | 88 | #ifdef CONFIG_NFSD_V2_ACL |
80 | 89 | extern struct svc_version nfsd_acl_version2; |
fs/nfsd/nfssvc.c
... | ... | @@ -427,11 +427,7 @@ |
427 | 427 | if (err) |
428 | 428 | break; |
429 | 429 | } |
430 | - | |
431 | - if (nfsd_serv->sv_nrthreads == 1) | |
432 | - svc_shutdown_net(nfsd_serv, net); | |
433 | - svc_destroy(nfsd_serv); | |
434 | - | |
430 | + nfsd_destroy(net); | |
435 | 431 | return err; |
436 | 432 | } |
437 | 433 | |
... | ... | @@ -478,9 +474,7 @@ |
478 | 474 | if (error < 0 && !nfsd_up_before) |
479 | 475 | nfsd_shutdown(); |
480 | 476 | out_destroy: |
481 | - if (nfsd_serv->sv_nrthreads == 1) | |
482 | - svc_shutdown_net(nfsd_serv, net); | |
483 | - svc_destroy(nfsd_serv); /* Release server */ | |
477 | + nfsd_destroy(net); /* Release server */ | |
484 | 478 | out: |
485 | 479 | mutex_unlock(&nfsd_mutex); |
486 | 480 | return error; |
... | ... | @@ -682,9 +676,7 @@ |
682 | 676 | |
683 | 677 | mutex_lock(&nfsd_mutex); |
684 | 678 | /* this function really, really should have been called svc_put() */ |
685 | - if (nfsd_serv->sv_nrthreads == 1) | |
686 | - svc_shutdown_net(nfsd_serv, net); | |
687 | - svc_destroy(nfsd_serv); | |
679 | + nfsd_destroy(net); | |
688 | 680 | mutex_unlock(&nfsd_mutex); |
689 | 681 | return ret; |
690 | 682 | } |