summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Fernandes (Google)2018-06-20 00:14:19 +0200
committerPaul E. McKenney2018-07-13 00:42:08 +0200
commitbf5b64355a3ce41752856b66c4efad4d7a88e84b (patch)
tree9894d06a15a08b64b2e3c2462a12b883f6883b7b
parentrcutorture: Add support to detect if boost kthread prio is too low (diff)
downloadkernel-qcow2-linux-bf5b64355a3ce41752856b66c4efad4d7a88e84b.tar.gz
kernel-qcow2-linux-bf5b64355a3ce41752856b66c4efad4d7a88e84b.tar.xz
kernel-qcow2-linux-bf5b64355a3ce41752856b66c4efad4d7a88e84b.zip
rcutorture: Fix rcu_barrier successes counter
The rcutorture test module currently increments both successes and error for the barrier test upon error, which results in misleading statistics being printed. This commit therefore changes the code to increment the success counter only when the test actually passes. This change was tested by by returning from the barrier callback without incrementing the callback counter, thus introducing what appeared to rcutorture to be rcu_barrier() failures. Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
-rw-r--r--kernel/rcu/rcutorture.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index e3d2d4f1d928..bdc86cdf3b8b 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -169,7 +169,7 @@ static long n_rcu_torture_boost_failure;
static long n_rcu_torture_boosts;
static atomic_long_t n_rcu_torture_timers;
static long n_barrier_attempts;
-static long n_barrier_successes;
+static long n_barrier_successes; /* did rcu_barrier test succeed? */
static atomic_long_t n_cbfloods;
static struct list_head rcu_torture_removed;
@@ -1723,8 +1723,9 @@ static int rcu_torture_barrier(void *arg)
atomic_read(&barrier_cbs_invoked),
n_barrier_cbs);
WARN_ON_ONCE(1);
+ } else {
+ n_barrier_successes++;
}
- n_barrier_successes++;
schedule_timeout_interruptible(HZ / 10);
} while (!torture_must_stop());
torture_kthread_stopping("rcu_torture_barrier");
@@ -1803,9 +1804,7 @@ static bool rcu_torture_can_boost(void)
if (boost_warn_once == 1)
return false;
- pr_alert("%s: WARN: RCU kthread priority too low to test boosting. "
- "Skipping RCU boost test. Try passing rcutree.kthread_prio > 1 "
- "on the kernel command line.\n", KBUILD_MODNAME);
+ pr_alert("%s: WARN: RCU kthread priority too low to test boosting. Skipping RCU boost test. Try passing rcutree.kthread_prio > 1 on the kernel command line.\n", KBUILD_MODNAME);
boost_warn_once = 1;
return false;
}