Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ff50b3d authored by Stanislav Kinsbursky's avatar Stanislav Kinsbursky Committed by J. Bruce Fields
Browse files

nfsd: move per-net startup code to separated function



NFSd resources are partially per-net and partially globally used.
This patch splits resources init and shutdown and moves per-net code to
separated functions.
Generic and per-net init and shutdown are called sequentially for a while.

Signed-off-by: default avatarStanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 08160352
Loading
Loading
Loading
Loading
+33 −15
Original line number Original line Diff line number Diff line
@@ -203,6 +203,27 @@ static int nfsd_init_socks(struct net *net)


static bool nfsd_up = false;
static bool nfsd_up = false;


static int nfsd_startup_net(struct net *net)
{
	int ret;

	ret = nfsd_init_socks(net);
	if (ret)
		return ret;
	ret = lockd_up(net);
	if (ret)
		return ret;
	ret = nfs4_state_start_net(net);
	if (ret)
		goto out_lockd;

	return 0;

out_lockd:
	lockd_down(net);
	return ret;
}

static int nfsd_startup(int nrservs, struct net *net)
static int nfsd_startup(int nrservs, struct net *net)
{
{
	int ret;
	int ret;
@@ -217,31 +238,29 @@ static int nfsd_startup(int nrservs, struct net *net)
	ret = nfsd_racache_init(2*nrservs);
	ret = nfsd_racache_init(2*nrservs);
	if (ret)
	if (ret)
		return ret;
		return ret;
	ret = nfsd_init_socks(net);
	if (ret)
		goto out_racache;
	ret = lockd_up(net);
	if (ret)
		goto out_racache;
	ret = nfs4_state_start();
	ret = nfs4_state_start();
	if (ret)
	if (ret)
		goto out_lockd;
		goto out_racache;

	ret = nfsd_startup_net(net);
	ret = nfs4_state_start_net(net);
	if (ret)
	if (ret)
		goto out_net_state;
		goto out_net;


	nfsd_up = true;
	nfsd_up = true;
	return 0;
	return 0;
out_net_state:

out_net:
	nfs4_state_shutdown();
	nfs4_state_shutdown();
out_lockd:
	lockd_down(net);
out_racache:
out_racache:
	nfsd_racache_shutdown();
	nfsd_racache_shutdown();
	return ret;
	return ret;
}
}


static void nfsd_shutdown_net(struct net *net)
{
	nfs4_state_shutdown_net(net);
	lockd_down(net);
}

static void nfsd_shutdown(struct net *net)
static void nfsd_shutdown(struct net *net)
{
{
	/*
	/*
@@ -252,9 +271,8 @@ static void nfsd_shutdown(struct net *net)
	 */
	 */
	if (!nfsd_up)
	if (!nfsd_up)
		return;
		return;
	nfs4_state_shutdown_net(net);
	nfsd_shutdown_net(net);
	nfs4_state_shutdown();
	nfs4_state_shutdown();
	lockd_down(net);
	nfsd_racache_shutdown();
	nfsd_racache_shutdown();
	nfsd_up = false;
	nfsd_up = false;
}
}