]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
rcutorture: Exempt tasks RCU from timely draining of grace periods
authorPaul E. McKenney <paulmck@linux.ibm.com>
Fri, 12 Apr 2019 16:02:46 +0000 (09:02 -0700)
committerPaul E. McKenney <paulmck@linux.ibm.com>
Tue, 28 May 2019 16:06:09 +0000 (09:06 -0700)
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: Paul E. McKenney <paulmck@linux.ibm.com>
kernel/rcu/rcutorture.c

index a16d6abe1715665eb38acf2bf820340f21685dc8..6a4558532eac5f4004b55dee074e60ca97f8a060 100644 (file)
@@ -299,6 +299,7 @@ struct rcu_torture_ops {
        int irq_capable;
        int can_boost;
        int extendables;
+       int slow_gps;
        const char *name;
 };
 
@@ -667,6 +668,7 @@ static struct rcu_torture_ops tasks_ops = {
        .fqs            = NULL,
        .stats          = NULL,
        .irq_capable    = 1,
+       .slow_gps       = 1,
        .name           = "tasks"
 };
 
@@ -1011,7 +1013,8 @@ rcu_torture_writer(void *arg)
                }
                rcu_torture_writer_state = RTWS_STUTTER;
                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++)
                                if (list_empty(&rcu_tortures[i].rtort_free) &&
                                    rcu_access_pointer(rcu_torture_current) !=