srcu: Move to state-based grace-period sequencing
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Fri, 10 Mar 2017 23:31:55 +0000 (15:31 -0800)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 18 Apr 2017 18:38:20 +0000 (11:38 -0700)
commitc2a8ec0778b2ca0d360ba9b5cac7fcd5ddfe798f
tree03f3c9bd515211b30d58cd2d998969e020395ed5
parentc6e56f593ac2df436700527c3488d4ed224c3acf
srcu: Move to state-based grace-period sequencing

The current SRCU grace-period processing might never reach the last
portion of srcu_advance_batches().  This is OK given the current
implementation, as the first portion, up to the try_check_zero()
following the srcu_flip() is sufficient to drive grace periods forward.
However, it has the unfortunate side-effect of making it impossible to
determine when a given grace period has ended, and it will be necessary
to efficiently trace ends of grace periods in order to efficiently handle
per-CPU SRCU callback lists.

This commit therefore adds states to the SRCU grace-period processing,
so that the end of a given SRCU grace period is marked by the transition
to the SRCU_STATE_DONE state.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
include/linux/srcu.h
kernel/rcu/srcu.c