mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 04:31:50 +00:00
rcu/nocb: Advance CBs after merge in rcutree_migrate_callbacks()
The rcutree_migrate_callbacks() invokes rcu_advance_cbs() on both the offlined CPU's ->cblist and that of the surviving CPU, then merges them. However, after the merge, and of the offlined CPU's callbacks that were not ready to be invoked will no longer be associated with a grace-period number. This commit therefore invokes rcu_advance_cbs() one more time on the merged ->cblist in order to assign a grace-period number to these callbacks. Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
This commit is contained in:
parent
273f034065
commit
23651d9b96
@ -3205,6 +3205,7 @@ void rcutree_migrate_callbacks(int cpu)
|
|||||||
needwake = rcu_advance_cbs(my_rnp, rdp) ||
|
needwake = rcu_advance_cbs(my_rnp, rdp) ||
|
||||||
rcu_advance_cbs(my_rnp, my_rdp);
|
rcu_advance_cbs(my_rnp, my_rdp);
|
||||||
rcu_segcblist_merge(&my_rdp->cblist, &rdp->cblist);
|
rcu_segcblist_merge(&my_rdp->cblist, &rdp->cblist);
|
||||||
|
needwake = needwake || rcu_advance_cbs(my_rnp, my_rdp);
|
||||||
rcu_segcblist_disable(&rdp->cblist);
|
rcu_segcblist_disable(&rdp->cblist);
|
||||||
WARN_ON_ONCE(rcu_segcblist_empty(&my_rdp->cblist) !=
|
WARN_ON_ONCE(rcu_segcblist_empty(&my_rdp->cblist) !=
|
||||||
!rcu_segcblist_n_cbs(&my_rdp->cblist));
|
!rcu_segcblist_n_cbs(&my_rdp->cblist));
|
||||||
|
Loading…
Reference in New Issue
Block a user