]> Pileus Git - ~andy/linux/commitdiff
rcu: Eliminate local variable signaled from force_quiescent_state()
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Mon, 4 Jan 2010 23:09:03 +0000 (15:09 -0800)
committerIngo Molnar <mingo@elte.hu>
Wed, 13 Jan 2010 08:06:02 +0000 (09:06 +0100)
Because the root rcu_node lock is held across entry to the
switch statement in force_quiescent_state(), it is no longer
necessary to snapshot rsp->signaled to a local variable.
Eliminate both the snapshotting and the local variable.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: laijs@cn.fujitsu.com
Cc: dipankar@in.ibm.com
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: <1262646550602-git-send-email->
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/rcutree.c

index 41688ff60e0729b8486961b176b18240284e547f..1d8cfb1711fdbd432835ff8b625836a972497af2 100644 (file)
@@ -1193,7 +1193,6 @@ static void force_quiescent_state(struct rcu_state *rsp, int relaxed)
        unsigned long flags;
        long lastcomp;
        struct rcu_node *rnp = rcu_get_root(rsp);
-       u8 signaled;
        u8 forcenow;
        u8 gpdone;
 
@@ -1209,7 +1208,6 @@ static void force_quiescent_state(struct rcu_state *rsp, int relaxed)
        rsp->n_force_qs++;
        spin_lock(&rnp->lock);  /* irqs already disabled */
        lastcomp = rsp->gpnum - 1;
-       signaled = rsp->signaled;
        rsp->jiffies_force_qs = jiffies + RCU_JIFFIES_TILL_FORCE_QS;
        if(!rcu_gp_in_progress(rsp)) {
                rsp->n_force_qs_ngp++;
@@ -1217,7 +1215,7 @@ static void force_quiescent_state(struct rcu_state *rsp, int relaxed)
                goto unlock_fqs_ret;  /* no GP in progress, time updated. */
        }
        rsp->fqs_active = 1;
-       switch (signaled) {
+       switch (rsp->signaled) {
        case RCU_GP_IDLE:
        case RCU_GP_INIT:
 
@@ -1242,11 +1240,10 @@ static void force_quiescent_state(struct rcu_state *rsp, int relaxed)
                /* Update state, record completion counter. */
                forcenow = 0;
                if (lastcomp + 1 == rsp->gpnum &&
-                   lastcomp == rsp->completed &&
-                   rsp->signaled == signaled) {
+                   lastcomp == rsp->completed) {
+                       forcenow = rsp->signaled == RCU_SAVE_COMPLETED;
                        rsp->signaled = RCU_FORCE_QS;
                        rsp->completed_fqs = lastcomp;
-                       forcenow = signaled == RCU_SAVE_COMPLETED;
                }
                if (!forcenow)
                        break;