Commit d73d06da authored by Chuck Lever's avatar Chuck Lever
Browse files

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: default avatarOlga Kornievskaia <okorniev@redhat.com>
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent dd9adfa0
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -216,8 +216,7 @@ static int make_socks(struct svc_serv *serv, struct net *net,
	if (warned++ == 0)
		printk(KERN_WARNING
			"lockd_up: makesock failed, error=%d\n", err);
	svc_xprt_destroy_all(serv, net);
	svc_rpcb_cleanup(serv, net);
	svc_xprt_destroy_all(serv, net, true);
	return err;
}

@@ -255,8 +254,7 @@ static void lockd_down_net(struct svc_serv *serv, struct net *net)
			nlm_shutdown_hosts_net(net);
			cancel_delayed_work_sync(&ln->grace_period_end);
			locks_end_grace(&ln->lockd_manager);
			svc_xprt_destroy_all(serv, net);
			svc_rpcb_cleanup(serv, net);
			svc_xprt_destroy_all(serv, net, true);
		}
	} else {
		pr_err("%s: no users! net=%x\n",
+1 −1
Original line number Diff line number Diff line
@@ -136,7 +136,7 @@ static void nfs_callback_down_net(u32 minorversion, struct svc_serv *serv, struc
		return;

	dprintk("NFS: destroy per-net callback data; net=%x\n", net->ns.inum);
	svc_xprt_destroy_all(serv, net);
	svc_xprt_destroy_all(serv, net, false);
}

static int nfs_callback_up_net(int minorversion, struct svc_serv *serv,
+1 −1
Original line number Diff line number Diff line
@@ -1993,7 +1993,7 @@ int nfsd_nl_listener_set_doit(struct sk_buff *skb, struct genl_info *info)
	 * remaining listeners and recreate the list.
	 */
	if (delete)
		svc_xprt_destroy_all(serv, net);
		svc_xprt_destroy_all(serv, net, false);

	/* walk list of addrs again, open any that still don't exist */
	nlmsg_for_each_attr_type(attr, NFSD_A_SERVER_SOCK_ADDR, info->nlhdr,
+2 −5
Original line number Diff line number Diff line
@@ -535,16 +535,13 @@ void nfsd_destroy_serv(struct net *net)
#endif
	}

	svc_xprt_destroy_all(serv, net);

	/*
	 * write_ports can create the server without actually starting
	 * any threads--if we get shut down before any threads are
	 * any threads.  If we get shut down before any threads are
	 * started, then nfsd_destroy_serv will be run before any of this
	 * other initialization has been done except the rpcb information.
	 */
	svc_rpcb_cleanup(serv, net);

	svc_xprt_destroy_all(serv, net, true);
	nfsd_shutdown_net(net);
	svc_destroy(&serv);
}
+2 −1
Original line number Diff line number Diff line
@@ -168,7 +168,8 @@ int svc_xprt_create(struct svc_serv *serv, const char *xprt_name,
			struct net *net, const int family,
			const unsigned short port, int flags,
			const struct cred *cred);
void	svc_xprt_destroy_all(struct svc_serv *serv, struct net *net);
void	svc_xprt_destroy_all(struct svc_serv *serv, struct net *net,
			     bool unregister);
void	svc_xprt_received(struct svc_xprt *xprt);
void	svc_xprt_enqueue(struct svc_xprt *xprt);
void	svc_xprt_put(struct svc_xprt *xprt);
Loading