rcu/nocb: Don't wake no-CBs GP kthread if timer posted under overload
authorPaul E. McKenney <paulmck@linux.ibm.com>
Tue, 16 Jul 2019 09:17:00 +0000 (02:17 -0700)
committerPaul E. McKenney <paulmck@linux.ibm.com>
Tue, 13 Aug 2019 21:38:24 +0000 (14:38 -0700)
commitf48fe4c586604c3a09938c6a6e9fd3356dfe8f3c
tree011d5815d8de824c08a4d9aade25b9e01e6f78bc
parent296181d78df9892e08e794f2a9a4d2c38f9acedb
rcu/nocb: Don't wake no-CBs GP kthread if timer posted under overload

When under overload conditions, __call_rcu_nocb_wake() will wake the
no-CBs GP kthread any time the no-CBs CB kthread is asleep or there
are no ready-to-invoke callbacks, but only after a timer delay.  If the
no-CBs GP kthread has a ->nocb_bypass_timer pending, the deferred wakeup
from __call_rcu_nocb_wake() is redundant.  This commit therefore makes
__call_rcu_nocb_wake() avoid posting the redundant deferred wakeup if
->nocb_bypass_timer is pending.  This requires adding a bit of ordering
of timer actions.

Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
kernel/rcu/tree_plugin.h