rcu/nocb: Recheck lazy callbacks under the ->nocb_lock from shrinker
authorFrederic Weisbecker <frederic@kernel.org>
Wed, 29 Mar 2023 16:02:02 +0000 (18:02 +0200)
committerPaul E. McKenney <paulmck@kernel.org>
Wed, 10 May 2023 00:26:59 +0000 (17:26 -0700)
commitb96a8b0b5be40f9bc9e45819f14b32ea9cdce73f
treec9025e181cc3904376f20d24fdbfdacb7e700bd7
parent7625926086765123251f765d91fc3a70617d334d
rcu/nocb: Recheck lazy callbacks under the ->nocb_lock from shrinker

The ->lazy_len is only checked locklessly. Recheck again under the
->nocb_lock to avoid spending more time on flushing/waking if not
necessary. The ->lazy_len can still increment concurrently (from 1 to
infinity) but under the ->nocb_lock we at least know for sure if there
are lazy callbacks at all (->lazy_len > 0).

Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/tree_nocb.h