[PATCH] sunrpc: document locking rules for svc_exit_thread()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




The locking required for svc_exit_thread() is not obvious, so document
it in a kdoc comment.

Signed-off-by: NeilBrown <neilb@xxxxxxx>
---

Rather than repost patch 5/14 of my recent set for dynamic thread
management, I decided to provide this as an independent patch which
could usefully be inserted into the series before 5/14.  That will make
that patch easier to understand/review.

NeilBrown


 net/sunrpc/svc.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
index 26b6e73fc0de..4c3df893c532 100644
--- a/net/sunrpc/svc.c
+++ b/net/sunrpc/svc.c
@@ -955,6 +955,20 @@ void svc_rqst_release_pages(struct svc_rqst *rqstp)
 	}
 }
 
+/**
+ * svc_exit_thread - finalise the termination of a sunrpc server thread
+ * @rqstp: the svc_rqst which represents the thread.
+ *
+ * When a thread started with svc_new_thread() exits it must call
+ * svc_exit_thread() as its last act.  This must be done with the
+ * service mutex held.  Normally this is held by a DIFFERENT thread, the
+ * one that is calling svc_set_num_threads() and which will wait for
+ * SP_VICTIM_REMAINS to be cleared before dropping the mutex.  If the
+ * thread exits for any reason other than svc_thread_should_stop()
+ * returning %true (which indicated that svc_set_num_threads() is
+ * waiting for it to exit), then it must take the service mutex itself,
+ * which can only safely be done using mutex_try_lock().
+ */
 void
 svc_exit_thread(struct svc_rqst *rqstp)
 {
-- 
2.44.0





[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux