summaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorLai Jiangshan <laijs@cn.fujitsu.com>2012-03-19 16:12:13 +0800
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2012-04-30 10:48:25 -0700
commit931ea9d1a6e06a5e3af03aa4aaaa7c7fd90e163f (patch)
treed25495ccbf92d1ba720a945ac7fb4079b0434db4 /block
parentd9792edd7a9a0858a3b1df92cf8beb31e4191e3c (diff)
downloadlinux-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