• L
    rcu: Implement a variant of Peter's SRCU algorithm · b52ce066
    Lai Jiangshan 提交于
    This commit implements a variant of Peter's algorithm, which may be found
    at https://lkml.org/lkml/2012/2/1/119.
    
    o	Make the checking lock-free to enable parallel checking.
    	Parallel checking is required when (1) the original checking
    	task is preempted for a long time, (2) sychronize_srcu_expedited()
    	starts during an ongoing SRCU grace period, or (3) we wish to
    	avoid acquiring a lock.
    
    o	Since the checking is lock-free, we avoid a mutex in state machine
    	for call_srcu().
    
    o	Remove the SRCU_REF_MASK and remove the coupling with the flipping.
    	This might allow us to remove the preempt_disable() in future
    	versions, though such removal will need great care because it
    	rescinds the one-old-reader-per-CPU guarantee.
    
    o	Remove a smp_mb(), simplify the comments and make the smp_mb() pairs
    	more intuitive.
    Inspired-by: NPeter Zijlstra <peterz@infradead.org>
    Signed-off-by: NLai Jiangshan <laijs@cn.fujitsu.com>
    Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    b52ce066
srcu.c 13.5 KB