Commit 61670adc authored by Paul E. McKenney's avatar Paul E. McKenney

rcutorture: Prepare for asynchronous access to rcu_fwd_startat

Because rcutorture's forward-progress checking will trigger from an
OOM notifier, this notifier will introduce asynchronous concurrent
access to the rcu_fwd_startat variable.  This commit therefore prepares
for this by converting updates to WRITE_ONCE().
Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
parent 2a7d9688
...@@ -1679,7 +1679,7 @@ static void rcu_torture_fwd_prog_nr(int *tested, int *tested_tries) ...@@ -1679,7 +1679,7 @@ static void rcu_torture_fwd_prog_nr(int *tested, int *tested_tries)
sd = cur_ops->stall_dur() + 1; sd = cur_ops->stall_dur() + 1;
sd4 = (sd + fwd_progress_div - 1) / fwd_progress_div; sd4 = (sd + fwd_progress_div - 1) / fwd_progress_div;
dur = sd4 + torture_random(&trs) % (sd - sd4); dur = sd4 + torture_random(&trs) % (sd - sd4);
rcu_fwd_startat = jiffies; WRITE_ONCE(rcu_fwd_startat, jiffies);
stopat = rcu_fwd_startat + dur; stopat = rcu_fwd_startat + dur;
while (time_before(jiffies, stopat) && !torture_must_stop()) { while (time_before(jiffies, stopat) && !torture_must_stop()) {
idx = cur_ops->readlock(); idx = cur_ops->readlock();
...@@ -1728,7 +1728,7 @@ static void rcu_torture_fwd_prog_cr(void) ...@@ -1728,7 +1728,7 @@ static void rcu_torture_fwd_prog_cr(void)
/* Loop continuously posting RCU callbacks. */ /* Loop continuously posting RCU callbacks. */
WRITE_ONCE(rcu_fwd_cb_nodelay, true); WRITE_ONCE(rcu_fwd_cb_nodelay, true);
cur_ops->sync(); /* Later readers see above write. */ cur_ops->sync(); /* Later readers see above write. */
rcu_fwd_startat = jiffies; WRITE_ONCE(rcu_fwd_startat, jiffies);
stopat = rcu_fwd_startat + MAX_FWD_CB_JIFFIES; stopat = rcu_fwd_startat + MAX_FWD_CB_JIFFIES;
n_launders = 0; n_launders = 0;
n_launders_cb = 0; n_launders_cb = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment