Re: [PATCH tip/core/rcu 2/2] rcu: Apply review feedback from JoshTriplett, part 4

From: Paul E. McKenney
Date: Mon Sep 28 2009 - 02:34:56 EST


On Sun, Sep 27, 2009 at 08:31:08AM -0700, Josh Triplett wrote:
> On Sat, Sep 26, 2009 at 11:49:51PM -0700, Paul E. McKenney wrote:
> > 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.
> >
> > 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.
> >
> > Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>
>
> I noticed one bit of unrelated code in this patch, which the commit
> message doesn't mention:

Good point -- this was not from our code review, but rather from my
mini-code-review introducing the relevant fixes.

> > --- a/kernel/rcutree.c
> > +++ b/kernel/rcutree.c
> [...]
> > @@ -473,18 +471,24 @@ static void print_other_cpu_stall(struct rcu_state *rsp)
> > return;
> > }
> > rsp->jiffies_stall = jiffies + RCU_SECONDS_TILL_STALL_RECHECK;
> > +
> > + /*
> > + * Now rat on any tasks that got kicked up to the root rcu_node
> > + * due to CPU offlining.
> > + */
> > + rcu_print_task_stall(rnp);
> > spin_unlock_irqrestore(&rnp->lock, flags);

The old code only checked for tasks blocked in RCU read-side critical
sections that were queued in the leaves of the rcu_node tree. Of
course, if all of the CPUs corresponding to a given rcu_node leaf have
gone offline since the tasks where queued, then they are moved to the
root rcu_node structure. So we need to check for stalled tasks in the
root rcu_node structure as well in the leaf rcu_node structures.

Thanx, Paul
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/