srcu: Provide internal interface to start a Tree SRCU grace period
authorPaul E. McKenney <paulmck@kernel.org>
Fri, 13 Nov 2020 18:08:09 +0000 (10:08 -0800)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 4 Jan 2021 21:53:37 +0000 (13:53 -0800)
commit29d2bb94a8a126ce80ffbb433b648b32fdea524e
tree34919c035397a0134b7aed35e6f81037b4470f3e
parent1a893c711a600ab57526619b56e6f6b7be00956e
srcu: Provide internal interface to start a Tree SRCU grace period

There is a need for a polling interface for SRCU grace periods.
This polling needs to initiate an SRCU grace period without having
to queue (and manage) a callback.  This commit therefore splits the
Tree SRCU __call_srcu() function into callback-initialization and
queuing/start-grace-period portions, with the latter in a new function
named srcu_gp_start_if_needed().  This function may be passed a NULL
callback pointer, in which case it will refrain from queuing anything.

Why have the new function mess with queuing?  Locking considerations,
of course!

Link: https://lore.kernel.org/rcu/20201112201547.GF3365678@moria.home.lan/
Reported-by: Kent Overstreet <kent.overstreet@gmail.com>
Reviewed-by: Neeraj Upadhyay <neeraju@codeaurora.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/srcutree.c