rcu: Force on tick when invoking lots of callbacks
[linux-2.6-block.git] / kernel / rcu / tree.c
index 81105141b6a823689254b5a9033cc7b62e330213..238f93b4b0a4e9e700228f1845aff5e48ccf9dd2 100644 (file)
@@ -2151,6 +2151,7 @@ static void rcu_do_batch(struct rcu_data *rdp)
        rcu_nocb_unlock_irqrestore(rdp, flags);
 
        /* Invoke callbacks. */
+       tick_dep_set_task(current, TICK_DEP_BIT_RCU);
        rhp = rcu_cblist_dequeue(&rcl);
        for (; rhp; rhp = rcu_cblist_dequeue(&rcl)) {
                debug_rcu_head_unqueue(rhp);
@@ -2217,6 +2218,7 @@ static void rcu_do_batch(struct rcu_data *rdp)
        /* Re-invoke RCU core processing if there are callbacks remaining. */
        if (!offloaded && rcu_segcblist_ready_cbs(&rdp->cblist))
                invoke_rcu_core();
+       tick_dep_clear_task(current, TICK_DEP_BIT_RCU);
 }
 
 /*