rcu: Clean up code based on review feedback from Josh Triplett, part 4
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Mon, 28 Sep 2009 14:46:33 +0000 (07:46 -0700)
committerIngo Molnar <mingo@elte.hu>
Mon, 5 Oct 2009 19:02:04 +0000 (21:02 +0200)
commita0b6c9a78c41dc36732d6e1e90f0f2f57b29816f
tree4e68c76c95a74e1c8f3360c10e2c3496b7a7df0d
parent3d76c082907e8f83c5d5c4572f38d53ad8f00c4b
rcu: Clean up code based on review feedback from Josh Triplett, part 4

These issues identified during an old-fashioned face-to-face code
review extending over many hours.  This group improves an existing
abstraction and introduces two new ones.  It also fixes an RCU
stall-warning bug found while making the other changes.

o Make RCU_INIT_FLAVOR() declare its own variables, removing
the need to declare them at each call site.

o Create an rcu_for_each_leaf() macro that scans the leaf
nodes of the rcu_node tree.

o Create an rcu_for_each_node_breadth_first() macro that does
a breadth-first traversal of the rcu_node tree, AKA
stepping through the array in index-number order.

o If all CPUs corresponding to a given leaf rcu_node
structure go offline, then any tasks queued on that leaf
will be moved to the root rcu_node structure.  Therefore,
the stall-warning code must dump out tasks queued on the
root rcu_node structure as well as those queued on the leaf
rcu_node structures.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: laijs@cn.fujitsu.com
Cc: dipankar@in.ibm.com
Cc: akpm@linux-foundation.org
Cc: mathieu.desnoyers@polymtl.ca
Cc: josh@joshtriplett.org
Cc: dvhltc@us.ibm.com
Cc: niv@us.ibm.com
Cc: peterz@infradead.org
Cc: rostedt@goodmis.org
Cc: Valdis.Kletnieks@vt.edu
Cc: dhowells@redhat.com
LKML-Reference: <12541491934126-git-send-email->
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/rcutree.c
kernel/rcutree.h
kernel/rcutree_plugin.h