mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@kernel.org>
To: rcu@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com,
	rostedt@goodmis.org, "Paul E. McKenney" <paulmck@kernel.org>
Subject: [PATCH rcu 2/7] doc: Call out queue_rcu_work() for blocking RCU callbacks
Date: Wed, 31 Aug 2022 11:06:20 -0700	[thread overview]
Message-ID: <20220831180625.2692892-2-paulmck@kernel.org> (raw)
In-Reply-To: <20220831180617.GA2692480@paulmck-ThinkPad-P17-Gen-1>

The current checklist.rst file correctly notes that RCU callbacks execute
in BH context, and cannot block.  This commit adds words advising people
needing callbacks to block to use workqueues, for example, by replacing
call_rcu() with queue_rcu_work().

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
 Documentation/RCU/checklist.rst | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Documentation/RCU/checklist.rst b/Documentation/RCU/checklist.rst
index 5eedef027d922..2db206fc3465f 100644
--- a/Documentation/RCU/checklist.rst
+++ b/Documentation/RCU/checklist.rst
@@ -190,6 +190,9 @@ over a rather long period of time, but improvements are always welcome!
 
 5.	If call_rcu() or call_srcu() is used, the callback function will
 	be called from softirq context.  In particular, it cannot block.
+	If you need the callback to block, run that code in a workqueue
+	handler scheduled from the callback.  The queue_rcu_work()
+	function does this for you in the case of call_rcu().
 
 6.	Since synchronize_rcu() can block, it cannot be called
 	from any sort of irq context.  The same rule applies
-- 
2.31.1.189.g2e36527f23


  parent reply	other threads:[~2022-08-31 18:06 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-31 18:06 [PATCH rcu 0/7] RCU documentation updates for v6.1 Paul E. McKenney
2022-08-31 18:06 ` [PATCH rcu 1/7] doc: Emphasize the need for explicit RCU read-side markers Paul E. McKenney
2022-08-31 18:06 ` Paul E. McKenney [this message]
2022-08-31 18:06 ` [PATCH rcu 3/7] doc: Use rcu_barrier() to rate-limit RCU callbacks Paul E. McKenney
2022-08-31 18:06 ` [PATCH rcu 4/7] doc: Fix list: rcu_access_pointer() is not lockdep-checked Paul E. McKenney
2022-08-31 18:06 ` [PATCH rcu 5/7] doc: Update rcu_access_pointer() advice in rcu_dereference.rst Paul E. McKenney
2022-08-31 18:06 ` [PATCH rcu 6/7] doc: SLAB_TYPESAFE_BY_RCU uses cannot rely on spinlocks Paul E. McKenney
2022-08-31 18:06 ` [PATCH rcu 7/7] doc/rcu: Update LWN article URLs and add 2019 article Paul E. McKenney

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=20220831180625.2692892-2-paulmck@kernel.org \
    --to=paulmck@kernel.org \
    --cc=kernel-team@fb.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rcu@vger.kernel.org \
    --cc=rostedt@goodmis.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®