rcu: Advance callbacks after migration
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 27 Jun 2017 03:37:51 +0000 (20:37 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 25 Jul 2017 20:04:48 +0000 (13:04 -0700)
When migrating callbacks from a newly offlined CPU, we are already
holding the root rcu_node structure's lock, so it costs almost nothing
to advance and accelerate the newly migrated callbacks.  This patch
therefore makes this advancing and acceleration happen.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcu/tree.c

index 58ab489..f9f01ae 100644 (file)
@@ -3935,6 +3935,7 @@ static void rcu_migrate_callbacks(int cpu, struct rcu_state *rsp)
        rcu_advance_cbs(rsp, rnp_root, rdp); /* Leverage recent GPs. */
        rcu_send_cbs_to_orphanage(cpu, rsp, rnp, rdp);
        rcu_adopt_orphan_cbs(rsp, flags);
+       rcu_advance_cbs(rsp, rnp_root, my_rdp); /* Assign GP to pending CBs. */
        raw_spin_unlock_irqrestore_rcu_node(rnp_root, flags);
        WARN_ONCE(rcu_segcblist_n_cbs(&rdp->cblist) != 0 ||
                  !rcu_segcblist_empty(&rdp->cblist),