Lai Jiangshan
b52ce066c5
rcu: Implement a variant of Peter's SRCU algorithm
...
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: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
2012-04-30 10:48:22 -07:00
..
2012-04-04 17:26:08 -07:00
2012-03-26 17:19:03 +02:00
2011-07-26 16:49:45 -07:00
2012-04-12 16:25:48 -06:00
2012-03-28 23:31:24 +02:00
2012-03-31 13:35:31 -07:00
2012-04-10 11:42:07 +02:00
2012-04-05 15:30:34 -07:00
2012-01-08 12:19:57 -08:00
2012-01-13 09:32:18 +10:30
2011-07-20 14:10:11 -07:00
2011-03-14 09:15:23 -04:00
2012-03-20 21:29:40 -04:00
2012-01-17 16:16:57 -05:00
2012-01-17 16:17:01 -05:00
2012-01-23 08:44:53 -08:00
2011-03-23 19:46:28 -07:00
2012-01-17 10:19:41 -08:00
2012-02-02 09:20:22 -08:00
2012-03-29 22:03:33 -07:00
2012-02-20 12:48:47 -08:00
2011-07-25 20:57:15 -07:00
2011-09-23 12:05:29 +05:30
2012-01-08 13:10:57 -08:00
2012-04-02 08:53:24 -07:00
2011-11-06 19:44:47 -08:00
2012-04-11 08:20:11 -07:00
2011-07-14 12:59:14 +03:00
2012-03-28 18:30:03 +01:00
2010-08-09 20:45:05 -07:00
2012-03-29 18:12:23 -07:00
2011-05-20 08:56:56 +02:00
2012-03-23 16:58:32 -07:00
2012-03-04 23:08:54 +01:00
2012-03-29 11:37:17 +02:00
2012-03-29 11:37:17 +02:00
2011-10-31 09:20:12 -04:00
2011-11-28 08:43:52 -08:00
2012-03-05 15:49:42 -08:00
2012-04-13 13:15:16 -04:00
2012-04-10 11:00:30 +02:00
2012-02-28 20:01:08 +01:00
2011-03-25 17:52:22 -07:00
2012-03-23 13:18:57 +01:00
2012-03-23 13:18:57 +01:00
2012-03-28 17:19:28 -07:00
2011-10-31 09:20:12 -04:00
2012-03-28 23:30:28 +02:00
2012-03-05 15:49:42 -08:00
2011-10-31 09:20:13 -04:00
2011-11-23 09:28:17 -08:00
2011-10-31 09:20:12 -04:00
2011-10-31 09:20:12 -04:00
2012-02-21 09:06:06 -08:00
2012-01-24 16:37:54 -08:00
2012-03-26 12:50:53 +10:30
2011-10-31 09:20:12 -04:00
2011-04-14 08:52:33 +02:00
2012-03-01 10:28:03 +01:00
2011-04-14 08:52:33 +02:00
2011-10-31 09:20:12 -04:00
2011-10-31 09:20:12 -04:00
2012-03-29 19:52:46 +08:00
2012-04-12 13:12:12 -07:00
2012-03-26 12:50:51 +10:30
2012-03-28 17:14:36 -07:00
2012-02-13 20:45:38 -05:00
2011-12-15 14:56:19 +01:00
2011-10-31 09:20:12 -04:00
2012-03-20 10:31:44 -07:00
2011-10-31 09:20:12 -04:00
2012-03-23 16:58:41 -07:00
2011-10-31 09:20:11 -04:00
2012-02-21 09:06:12 -08:00
2012-02-21 09:06:03 -08:00
2012-02-21 09:03:43 -08:00
2012-02-21 09:06:13 -08:00
2012-04-30 10:48:19 -07:00
2012-02-21 09:42:30 -08:00
2012-02-21 09:06:07 -08:00
2012-02-21 15:33:34 -08:00
2012-02-21 09:06:07 -08:00
2012-02-10 09:04:49 +01:00
2012-01-22 15:08:46 -05:00
2012-02-03 23:37:07 +01:00
2011-01-27 21:13:51 -05:00
2011-12-06 08:16:49 +01:00
2011-12-14 14:54:22 -08:00
2011-12-11 10:33:18 -08:00
2012-03-28 18:30:03 +01:00
2012-01-17 16:16:55 -05:00
2011-10-31 09:20:12 -04:00
2012-03-28 15:58:21 -07:00
2012-03-28 17:14:35 -07:00
2012-03-20 10:32:09 -07:00
2012-03-23 13:18:57 +01:00
2012-04-30 10:48:22 -07:00
2011-10-31 09:20:12 -04:00
2011-11-06 19:44:47 -08:00
2011-10-31 17:30:44 -07:00
2012-03-28 17:14:36 -07:00
2011-12-20 10:25:04 -08:00
2012-04-05 14:51:43 +10:00
2011-09-19 17:04:37 -07:00
2010-10-14 08:55:27 +02:00
2012-03-15 18:17:55 -07:00
2012-01-06 07:53:34 -08:00
2012-02-24 10:05:59 +01:00
2011-12-15 14:56:19 +01:00
2011-03-23 19:47:08 -07:00
2011-10-31 09:20:12 -04:00
2011-10-31 09:20:12 -04:00
2011-10-31 09:20:12 -04:00
2011-10-31 09:20:12 -04:00
2011-11-06 19:44:47 -08:00
2011-10-31 09:20:12 -04:00
2011-12-21 10:07:39 +01:00
2012-03-23 16:58:32 -07:00
2012-03-20 18:13:22 -07:00