Paul E. McKenney 621934ee7e [PATCH] srcu-3: RCU variant permitting read-side blocking
Updated patch adding a variant of RCU that permits sleeping in read-side
critical sections.  SRCU is as follows:

o	Each use of SRCU creates its own srcu_struct, and each
	srcu_struct has its own set of grace periods.  This is
	critical, as it prevents one subsystem with a blocking
	reader from holding up SRCU grace periods for other
	subsystems.

o	The SRCU primitives (srcu_read_lock(), srcu_read_unlock(),
	and synchronize_srcu()) all take a pointer to a srcu_struct.

o	The SRCU primitives must be called from process context.

o	srcu_read_lock() returns an int that must be passed to
	the matching srcu_read_unlock().  Realtime RCU avoids the
	need for this by storing the state in the task struct,
	but SRCU needs to allow a given code path to pass through
	multiple SRCU domains -- storing state in the task struct
	would therefore require either arbitrary space in the
	task struct or arbitrary limits on SRCU nesting.  So I
	kicked the state-storage problem up to the caller.

	Of course, it is not permitted to call synchronize_srcu()
	while in an SRCU read-side critical section.

o	There is no call_srcu().  It would not be hard to implement
	one, but it seems like too easy a way to OOM the system.
	(Hey, we have enough trouble with call_rcu(), which does
	-not- permit readers to sleep!!!)  So, if you want it,
	please tell me why...

[josht@us.ibm.com: sparse notation]
Signed-off-by: Paul E. McKenney <paulmck@us.ibm.com>
Signed-off-by: Josh Triplett <josh@freedesktop.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-10-04 07:55:30 -07:00
..
2006-09-26 17:40:24 -04:00
2006-10-03 23:01:26 +02:00
2006-10-03 23:01:26 +02:00
2006-10-01 00:39:29 -07:00
2006-08-31 00:02:15 -04:00
2006-09-28 17:53:58 -07:00
2006-10-03 23:01:26 +02:00
2006-03-23 07:38:09 -08:00
2006-09-22 23:24:30 -04:00
2006-10-03 08:04:16 -07:00
2006-07-03 19:44:51 -07:00
2006-05-08 16:32:05 -07:00
2006-09-26 08:48:54 -07:00
2006-06-23 02:07:36 -07:00
2006-03-31 12:18:54 -08:00
2006-09-22 15:18:47 -07:00
2006-10-03 08:04:13 -07:00
2006-06-25 10:01:19 -07:00
2006-07-28 21:02:00 -07:00
2006-10-02 07:57:12 -07:00
2006-09-26 17:40:24 -04:00
2006-03-26 08:56:56 -08:00
2006-10-04 07:55:30 -07:00
2006-09-26 15:38:52 -07:00
2006-09-28 18:02:18 -07:00
2006-10-03 08:04:08 -07:00
2006-09-28 18:02:13 -07:00
2006-09-28 18:02:02 -07:00
2006-09-28 18:02:31 -07:00
2006-09-28 18:02:29 -07:00
2006-10-02 07:57:22 -07:00
2006-08-21 10:02:50 +02:00
2006-09-28 17:54:01 -07:00
2006-10-04 07:55:12 -07:00
2006-09-28 18:02:30 -07:00
2006-03-20 22:21:10 -08:00
2006-06-21 12:40:49 -07:00
2006-10-04 07:55:12 -07:00
2006-06-05 12:29:17 -07:00
2006-09-26 08:48:47 -07:00
2006-03-22 07:53:57 -08:00
2006-10-01 00:39:18 -07:00
2006-09-28 18:02:22 -07:00
2006-09-29 09:18:12 -07:00
2006-10-01 00:39:19 -07:00
2006-06-25 10:01:13 -07:00
2006-03-23 07:38:14 -08:00
2006-03-23 07:38:14 -08:00
2006-09-22 14:54:20 -07:00
2006-09-28 18:02:58 -07:00
2006-03-20 13:44:40 -05:00
2006-08-27 11:01:32 -07:00
2006-10-02 07:57:22 -07:00
2006-09-26 08:48:48 -07:00
2006-06-25 10:01:09 -07:00
2006-10-04 07:55:30 -07:00
2006-03-27 08:44:48 -08:00
2006-08-19 17:44:31 -04:00
2006-10-03 08:03:40 -07:00
2006-05-04 06:55:12 +02:00
2006-06-28 15:54:27 -07:00
2006-09-25 21:08:37 -07:00
2006-07-03 19:48:25 -07:00
2006-10-03 23:01:26 +02:00
2006-10-02 07:57:15 -07:00
2006-06-23 07:42:49 -07:00
2006-06-25 10:01:06 -07:00
2006-06-25 10:01:06 -07:00
2006-09-26 08:49:04 -07:00
2006-09-26 08:48:44 -07:00
2006-06-25 10:01:14 -07:00
2006-09-29 09:18:11 -07:00
2006-03-23 07:38:12 -08:00
2006-03-28 09:16:05 -08:00
2006-10-01 00:39:18 -07:00
2006-10-01 00:39:19 -07:00
2006-09-26 08:48:58 -07:00
2006-03-31 12:18:56 -08:00
2006-09-28 17:53:59 -07:00
2006-10-01 00:39:18 -07:00
2006-09-27 08:26:20 -07:00
2006-03-23 07:38:14 -08:00
2006-09-28 18:02:16 -07:00
2006-10-01 00:39:34 -07:00
2006-10-01 00:39:19 -07:00
2006-10-04 07:55:12 -07:00
2006-09-29 09:18:13 -07:00
2006-07-10 13:24:25 -07:00
2006-09-25 16:52:14 -04:00
2006-10-03 23:01:26 +02:00