Skip to content

Commit ede9353

Browse files
Frederic Weisbeckerpaulmckrcu
authored andcommitted
srcu: No need to advance/accelerate if no callback enqueued
While in grace period start, there is nothing to accelerate and therefore no need to advance the callbacks either if no callback is to be enqueued. Spare these needless operations in this case. Signed-off-by: Frederic Weisbecker <frederic@kernel.org> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
1 parent 7570778 commit ede9353

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

kernel/rcu/srcutree.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1261,9 +1261,11 @@ static unsigned long srcu_gp_start_if_needed(struct srcu_struct *ssp,
12611261
* period (gp_num = X + 8). So acceleration fails.
12621262
*/
12631263
s = rcu_seq_snap(&ssp->srcu_sup->srcu_gp_seq);
1264-
rcu_segcblist_advance(&sdp->srcu_cblist,
1265-
rcu_seq_current(&ssp->srcu_sup->srcu_gp_seq));
1266-
WARN_ON_ONCE(!rcu_segcblist_accelerate(&sdp->srcu_cblist, s) && rhp);
1264+
if (rhp) {
1265+
rcu_segcblist_advance(&sdp->srcu_cblist,
1266+
rcu_seq_current(&ssp->srcu_sup->srcu_gp_seq));
1267+
WARN_ON_ONCE(!rcu_segcblist_accelerate(&sdp->srcu_cblist, s));
1268+
}
12671269
if (ULONG_CMP_LT(sdp->srcu_gp_seq_needed, s)) {
12681270
sdp->srcu_gp_seq_needed = s;
12691271
needgp = true;

0 commit comments

Comments
 (0)