All of lore.kernel.org
 help / color / mirror / Atom feed
From: NeilBrown <neilb@suse.de>
To: "J. Bruce Fields" <bfields@fieldses.org>,
	Chuck Lever <chuck.lever@oracle.com>
Cc: linux-nfs@vger.kernel.org
Subject: [PATCH 14/20] lockd: move svc_exit_thread() into the thread
Date: Mon, 29 Nov 2021 15:51:25 +1100	[thread overview]
Message-ID: <163816148561.32298.4688484272863440870.stgit@noble.brown> (raw)
In-Reply-To: <163816133466.32298.13831616524908720974.stgit@noble.brown>

The normal place to call svc_exit_thread() is from the thread itself
just before it exists.
Do this for lockd.

This means that nlmsvc_rqst is not used out side of lockd_start_svc(),
so it can be made local to that function, and renamed to 'rqst'.

Signed-off-by: NeilBrown <neilb@suse.de>
---
 fs/lockd/svc.c |   23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c
index 91e7c839841e..9aa499a76159 100644
--- a/fs/lockd/svc.c
+++ b/fs/lockd/svc.c
@@ -56,7 +56,6 @@ static DEFINE_MUTEX(nlmsvc_mutex);
 static unsigned int		nlmsvc_users;
 static struct svc_serv		*nlmsvc_serv;
 static struct task_struct	*nlmsvc_task;
-static struct svc_rqst		*nlmsvc_rqst;
 unsigned long			nlmsvc_timeout;
 
 unsigned int lockd_net_id;
@@ -182,6 +181,11 @@ lockd(void *vrqstp)
 	nlm_shutdown_hosts();
 	cancel_delayed_work_sync(&ln->grace_period_end);
 	locks_end_grace(&ln->lockd_manager);
+
+	dprintk("lockd_down: service stopped\n");
+
+	svc_exit_thread(rqstp);
+
 	return 0;
 }
 
@@ -358,13 +362,14 @@ static void lockd_unregister_notifiers(void)
 static int lockd_start_svc(struct svc_serv *serv)
 {
 	int error;
+	struct svc_rqst *rqst;
 
 	/*
 	 * Create the kernel thread and wait for it to start.
 	 */
-	nlmsvc_rqst = svc_prepare_thread(serv, &serv->sv_pools[0], NUMA_NO_NODE);
-	if (IS_ERR(nlmsvc_rqst)) {
-		error = PTR_ERR(nlmsvc_rqst);
+	rqst = svc_prepare_thread(serv, &serv->sv_pools[0], NUMA_NO_NODE);
+	if (IS_ERR(rqst)) {
+		error = PTR_ERR(rqst);
 		printk(KERN_WARNING
 			"lockd_up: svc_rqst allocation failed, error=%d\n",
 			error);
@@ -374,24 +379,23 @@ static int lockd_start_svc(struct svc_serv *serv)
 	svc_sock_update_bufs(serv);
 	serv->sv_maxconn = nlm_max_connections;
 
-	nlmsvc_task = kthread_create(lockd, nlmsvc_rqst, "%s", serv->sv_name);
+	nlmsvc_task = kthread_create(lockd, rqst, "%s", serv->sv_name);
 	if (IS_ERR(nlmsvc_task)) {
 		error = PTR_ERR(nlmsvc_task);
 		printk(KERN_WARNING
 			"lockd_up: kthread_run failed, error=%d\n", error);
 		goto out_task;
 	}
-	nlmsvc_rqst->rq_task = nlmsvc_task;
+	rqst->rq_task = nlmsvc_task;
 	wake_up_process(nlmsvc_task);
 
 	dprintk("lockd_up: service started\n");
 	return 0;
 
 out_task:
-	svc_exit_thread(nlmsvc_rqst);
+	svc_exit_thread(rqst);
 	nlmsvc_task = NULL;
 out_rqst:
-	nlmsvc_rqst = NULL;
 	return error;
 }
 
@@ -500,9 +504,6 @@ lockd_down(struct net *net)
 	}
 	lockd_unregister_notifiers();
 	kthread_stop(nlmsvc_task);
-	dprintk("lockd_down: service stopped\n");
-	svc_exit_thread(nlmsvc_rqst);
-	nlmsvc_rqst = NULL;
 	dprintk("lockd_down: service destroyed\n");
 	nlmsvc_serv = NULL;
 	nlmsvc_task = NULL;



  parent reply	other threads:[~2021-11-29  4:56 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-29  4:51 [PATCH 00/20 v3] SUNRPC: clean up server thread management NeilBrown
2021-11-29  4:51 ` [PATCH 03/20] SUNRPC/NFSD: clean up get/put functions NeilBrown
2021-11-29  4:51 ` [PATCH 12/20] lockd: simplify management of network status notifiers NeilBrown
2021-11-29  4:51 ` [PATCH 20/20] NFS: switch the callback service back to non-pooled NeilBrown
2021-11-29  4:51 ` [PATCH 17/20] SUNRPC: move the pool_map definitions (back) into svc.c NeilBrown
2021-11-29  4:51 ` [PATCH 06/20] SUNRPC: use sv_lock to protect updates to sv_nrthreads NeilBrown
2021-11-29  4:51 ` [PATCH 13/20] lockd: move lockd_start_svc() call into lockd_create_svc() NeilBrown
2023-06-02 15:46   ` Ido Schimmel
2023-06-02 21:28     ` NeilBrown
2023-06-03  9:33       ` Ido Schimmel
2023-06-03 14:58         ` Chuck Lever III
2021-11-29  4:51 ` [PATCH 01/20] NFSD: handle errors better in write_ports_addfd() NeilBrown
2021-11-29  4:51 ` [PATCH 02/20] SUNRPC: change svc_get() to return the svc NeilBrown
2021-11-29  4:51 ` [PATCH 15/20] lockd: introduce lockd_put() NeilBrown
2021-11-29  4:51 ` [PATCH 10/20] NFSD: simplify locking for network notifier NeilBrown
2021-11-29  4:51 ` [PATCH 04/20] SUNRPC: stop using ->sv_nrthreads as a refcount NeilBrown
2021-11-29  4:51 ` [PATCH 05/20] nfsd: make nfsd_stats.th_cnt atomic_t NeilBrown
2021-11-29  4:51 ` NeilBrown [this message]
2021-11-29  4:51 ` [PATCH 18/20] SUNRPC: always treat sv_nrpools==1 as "not pooled" NeilBrown
2021-11-29  4:51 ` [PATCH 19/20] lockd: use svc_set_num_threads() for thread start and stop NeilBrown
2021-11-29  4:51 ` [PATCH 08/20] NFSD: Make it possible to use svc_set_num_threads_sync NeilBrown
2021-11-29  4:51 ` [PATCH 16/20] lockd: rename lockd_create_svc() to lockd_get() NeilBrown
2021-11-29  4:51 ` [PATCH 07/20] NFSD: narrow nfsd_mutex protection in nfsd thread NeilBrown
2021-11-29  4:51 ` [PATCH 11/20] lockd: introduce nlmsvc_serv NeilBrown
2021-11-29  4:51 ` [PATCH 09/20] SUNRPC: discard svo_setup and rename svc_set_num_threads_sync() NeilBrown
2021-11-29 17:45 ` [PATCH 00/20 v3] SUNRPC: clean up server thread management Chuck Lever III

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=163816148561.32298.4688484272863440870.stgit@noble.brown \
    --to=neilb@suse.de \
    --cc=bfields@fieldses.org \
    --cc=chuck.lever@oracle.com \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.