diff options
author | Lai Jiangshan <laijs@cn.fujitsu.com> | 2012-03-19 16:12:13 +0800 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2012-04-30 10:48:25 -0700 |
commit | 931ea9d1a6e06a5e3af03aa4aaaa7c7fd90e163f (patch) | |
tree | d25495ccbf92d1ba720a945ac7fb4079b0434db4 /block | |
parent | d9792edd7a9a0858a3b1df92cf8beb31e4191e3c (diff) | |
download | linux-931ea9d1a6e06a5e3af03aa4aaaa7c7fd90e163f.tar.bz2 |
rcu: Implement per-domain single-threaded call_srcu() state machine
This commit implements an SRCU state machine in support of call_srcu().
The state machine is preemptible, light-weight, and single-threaded,
minimizing synchronization overhead. In particular, there is no longer
any need for synchronize_srcu() to be guarded by a mutex.
Expedited processing is handled, at least in the absence of concurrent
grace-period operations on that same srcu_struct structure, by having
the synchronize_srcu_expedited() thread take on the role of the
workqueue thread for one iteration.
There is a reasonable probability that a given SRCU callback will
be invoked on the same CPU that registered it, however, there is no
guarantee. Concurrent SRCU grace-period primitives can cause callbacks
to be executed elsewhere, even in absence of CPU-hotplug operations.
Callbacks execute in process context, but under the influence of
local_bh_disable(), so it is illegal to sleep in an SRCU callback
function.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'block')
0 files changed, 0 insertions, 0 deletions