rhashtable: Allow other tasks to be scheduled in large lookup loops
authorThomas Graf <tgraf@suug.ch>
Fri, 17 Jul 2015 08:52:48 +0000 (10:52 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 21 Jul 2015 07:10:08 +0000 (00:10 -0700)
Depending on system speed, the large lookup/insert/delete loops of the testsuite can
take a considerable amount of time to complete causing watchdog warnings to appear.
Allow other tasks to be scheduled throughout the loops.

Reported-by: Meelis Roos <mroos@linux.ee>
Signed-off-by: Thomas Graf <tgraf@suug.ch>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
lib/test_rhashtable.c

index c90777eae1f837f84b1b53fd8704b567b9d90835..9af7cefb195d3d3537366396d0af31180292ece9 100644 (file)
@@ -20,6 +20,7 @@
 #include <linux/rcupdate.h>
 #include <linux/rhashtable.h>
 #include <linux/slab.h>
+#include <linux/sched.h>
 
 #define MAX_ENTRIES    1000000
 #define TEST_INSERT_FAIL INT_MAX
@@ -87,6 +88,8 @@ static int __init test_rht_lookup(struct rhashtable *ht)
                                return -EINVAL;
                        }
                }
+
+               cond_resched_rcu();
        }
 
        return 0;
@@ -160,6 +163,8 @@ static s64 __init test_rhashtable(struct rhashtable *ht)
                } else if (err) {
                        return err;
                }
+
+               cond_resched();
        }
 
        if (insert_fails)
@@ -183,6 +188,8 @@ static s64 __init test_rhashtable(struct rhashtable *ht)
 
                        rhashtable_remove_fast(ht, &obj->node, test_rht_params);
                }
+
+               cond_resched();
        }
 
        end = ktime_get_ns();