rhashtable: Allow other tasks to be scheduled in large lookup loops
[cascardo/linux.git] / lib / test_rhashtable.c
index c90777e..9af7cef 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();