Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

SUNRPC: Move the svc_rpcb_cleanup() call sites

Clean up: because svc_rpcb_cleanup() and svc_xprt_destroy_all()
are always invoked in pairs, we can deduplicate code by moving
the svc_rpcb_cleanup() call sites into svc_xprt_destroy_all().

Tested-by: Olga Kornievskaia <okorniev@redhat.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>

+14 -14
+2 -4
fs/lockd/svc.c
··· 216 216 if (warned++ == 0) 217 217 printk(KERN_WARNING 218 218 "lockd_up: makesock failed, error=%d\n", err); 219 - svc_xprt_destroy_all(serv, net); 220 - svc_rpcb_cleanup(serv, net); 219 + svc_xprt_destroy_all(serv, net, true); 221 220 return err; 222 221 } 223 222 ··· 254 255 nlm_shutdown_hosts_net(net); 255 256 cancel_delayed_work_sync(&ln->grace_period_end); 256 257 locks_end_grace(&ln->lockd_manager); 257 - svc_xprt_destroy_all(serv, net); 258 - svc_rpcb_cleanup(serv, net); 258 + svc_xprt_destroy_all(serv, net, true); 259 259 } 260 260 } else { 261 261 pr_err("%s: no users! net=%x\n",
+1 -1
fs/nfs/callback.c
··· 136 136 return; 137 137 138 138 dprintk("NFS: destroy per-net callback data; net=%x\n", net->ns.inum); 139 - svc_xprt_destroy_all(serv, net); 139 + svc_xprt_destroy_all(serv, net, false); 140 140 } 141 141 142 142 static int nfs_callback_up_net(int minorversion, struct svc_serv *serv,
+1 -1
fs/nfsd/nfsctl.c
··· 1993 1993 * remaining listeners and recreate the list. 1994 1994 */ 1995 1995 if (delete) 1996 - svc_xprt_destroy_all(serv, net); 1996 + svc_xprt_destroy_all(serv, net, false); 1997 1997 1998 1998 /* walk list of addrs again, open any that still don't exist */ 1999 1999 nlmsg_for_each_attr_type(attr, NFSD_A_SERVER_SOCK_ADDR, info->nlhdr,
+2 -5
fs/nfsd/nfssvc.c
··· 535 535 #endif 536 536 } 537 537 538 - svc_xprt_destroy_all(serv, net); 539 - 540 538 /* 541 539 * write_ports can create the server without actually starting 542 - * any threads--if we get shut down before any threads are 540 + * any threads. If we get shut down before any threads are 543 541 * started, then nfsd_destroy_serv will be run before any of this 544 542 * other initialization has been done except the rpcb information. 545 543 */ 546 - svc_rpcb_cleanup(serv, net); 547 - 544 + svc_xprt_destroy_all(serv, net, true); 548 545 nfsd_shutdown_net(net); 549 546 svc_destroy(&serv); 550 547 }
+2 -1
include/linux/sunrpc/svc_xprt.h
··· 168 168 struct net *net, const int family, 169 169 const unsigned short port, int flags, 170 170 const struct cred *cred); 171 - void svc_xprt_destroy_all(struct svc_serv *serv, struct net *net); 171 + void svc_xprt_destroy_all(struct svc_serv *serv, struct net *net, 172 + bool unregister); 172 173 void svc_xprt_received(struct svc_xprt *xprt); 173 174 void svc_xprt_enqueue(struct svc_xprt *xprt); 174 175 void svc_xprt_put(struct svc_xprt *xprt);
-1
net/sunrpc/svc.c
··· 436 436 svc_unregister(serv, net); 437 437 rpcb_put_local(net); 438 438 } 439 - EXPORT_SYMBOL_GPL(svc_rpcb_cleanup); 440 439 441 440 static int svc_uses_rpcbind(struct svc_serv *serv) 442 441 {
+6 -1
net/sunrpc/svc_xprt.c
··· 1115 1115 * svc_xprt_destroy_all - Destroy transports associated with @serv 1116 1116 * @serv: RPC service to be shut down 1117 1117 * @net: target network namespace 1118 + * @unregister: true if it is OK to unregister the destroyed xprts 1118 1119 * 1119 1120 * Server threads may still be running (especially in the case where the 1120 1121 * service is still running in other network namespaces). ··· 1128 1127 * threads, we may need to wait a little while and then check again to 1129 1128 * see if they're done. 1130 1129 */ 1131 - void svc_xprt_destroy_all(struct svc_serv *serv, struct net *net) 1130 + void svc_xprt_destroy_all(struct svc_serv *serv, struct net *net, 1131 + bool unregister) 1132 1132 { 1133 1133 int delay = 0; 1134 1134 ··· 1139 1137 svc_clean_up_xprts(serv, net); 1140 1138 msleep(delay++); 1141 1139 } 1140 + 1141 + if (unregister) 1142 + svc_rpcb_cleanup(serv, net); 1142 1143 } 1143 1144 EXPORT_SYMBOL_GPL(svc_xprt_destroy_all); 1144 1145