Commit 5eabea59 authored by Paul E. McKenney's avatar Paul E. McKenney

rcutorture: Exempt tasks RCU from timely draining of grace periods

After the end of each stutter pause interval, the rcu_torture_writer()
kthread checks to be sure that all prior callbacks have completed so
that all the test structures have been freed.  This works fine except
for tasks RCU, in which grace periods can take one good long time.
This commit therefore exempts tasks RCU from this check.
Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
parent 2456a856
...@@ -299,6 +299,7 @@ struct rcu_torture_ops { ...@@ -299,6 +299,7 @@ struct rcu_torture_ops {
int irq_capable; int irq_capable;
int can_boost; int can_boost;
int extendables; int extendables;
int slow_gps;
const char *name; const char *name;
}; };
...@@ -667,6 +668,7 @@ static struct rcu_torture_ops tasks_ops = { ...@@ -667,6 +668,7 @@ static struct rcu_torture_ops tasks_ops = {
.fqs = NULL, .fqs = NULL,
.stats = NULL, .stats = NULL,
.irq_capable = 1, .irq_capable = 1,
.slow_gps = 1,
.name = "tasks" .name = "tasks"
}; };
...@@ -1011,7 +1013,8 @@ rcu_torture_writer(void *arg) ...@@ -1011,7 +1013,8 @@ rcu_torture_writer(void *arg)
} }
rcu_torture_writer_state = RTWS_STUTTER; rcu_torture_writer_state = RTWS_STUTTER;
if (stutter_wait("rcu_torture_writer") && if (stutter_wait("rcu_torture_writer") &&
!READ_ONCE(rcu_fwd_cb_nodelay)) !READ_ONCE(rcu_fwd_cb_nodelay) &&
!cur_ops->slow_gps)
for (i = 0; i < ARRAY_SIZE(rcu_tortures); i++) for (i = 0; i < ARRAY_SIZE(rcu_tortures); i++)
if (list_empty(&rcu_tortures[i].rtort_free) && if (list_empty(&rcu_tortures[i].rtort_free) &&
rcu_access_pointer(rcu_torture_current) != rcu_access_pointer(rcu_torture_current) !=
......
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