rcutorture: Test start_poll_synchronize_rcu() and poll_state_synchronize_rcu()
This commit causes rcutorture to test the new start_poll_synchronize_rcu() and poll_state_synchronize_rcu() functions. Because of the difficulty of determining the nature of a synchronous RCU grace (expedited or not), the test that insisted that poll_state_synchronize_rcu() detect an intervening synchronize_rcu() had to be dropped. Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
parent
0909fc2b2c
commit
7ac3fdf099
|
@ -494,6 +494,8 @@ static struct rcu_torture_ops rcu_ops = {
|
||||||
.sync = synchronize_rcu,
|
.sync = synchronize_rcu,
|
||||||
.exp_sync = synchronize_rcu_expedited,
|
.exp_sync = synchronize_rcu_expedited,
|
||||||
.get_gp_state = get_state_synchronize_rcu,
|
.get_gp_state = get_state_synchronize_rcu,
|
||||||
|
.start_gp_poll = start_poll_synchronize_rcu,
|
||||||
|
.poll_gp_state = poll_state_synchronize_rcu,
|
||||||
.cond_sync = cond_synchronize_rcu,
|
.cond_sync = cond_synchronize_rcu,
|
||||||
.call = call_rcu,
|
.call = call_rcu,
|
||||||
.cb_barrier = rcu_barrier,
|
.cb_barrier = rcu_barrier,
|
||||||
|
@ -1223,14 +1225,6 @@ rcu_torture_writer(void *arg)
|
||||||
WARN_ON_ONCE(1);
|
WARN_ON_ONCE(1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (cur_ops->get_gp_state && cur_ops->poll_gp_state)
|
|
||||||
WARN_ONCE(rcu_torture_writer_state != RTWS_DEF_FREE &&
|
|
||||||
!cur_ops->poll_gp_state(cookie),
|
|
||||||
"%s: Cookie check 2 failed %s(%d) %lu->%lu\n",
|
|
||||||
__func__,
|
|
||||||
rcu_torture_writer_state_getname(),
|
|
||||||
rcu_torture_writer_state,
|
|
||||||
cookie, cur_ops->get_gp_state());
|
|
||||||
}
|
}
|
||||||
WRITE_ONCE(rcu_torture_current_version,
|
WRITE_ONCE(rcu_torture_current_version,
|
||||||
rcu_torture_current_version + 1);
|
rcu_torture_current_version + 1);
|
||||||
|
@ -1589,7 +1583,7 @@ static bool rcu_torture_one_read(struct torture_random_state *trsp, long myid)
|
||||||
preempt_enable();
|
preempt_enable();
|
||||||
if (cur_ops->get_gp_state && cur_ops->poll_gp_state)
|
if (cur_ops->get_gp_state && cur_ops->poll_gp_state)
|
||||||
WARN_ONCE(cur_ops->poll_gp_state(cookie),
|
WARN_ONCE(cur_ops->poll_gp_state(cookie),
|
||||||
"%s: Cookie check 3 failed %s(%d) %lu->%lu\n",
|
"%s: Cookie check 2 failed %s(%d) %lu->%lu\n",
|
||||||
__func__,
|
__func__,
|
||||||
rcu_torture_writer_state_getname(),
|
rcu_torture_writer_state_getname(),
|
||||||
rcu_torture_writer_state,
|
rcu_torture_writer_state,
|
||||||
|
|
Loading…
Reference in New Issue