diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/rhashtable.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/rhashtable.c b/lib/rhashtable.c index 090641db4c0d..b5344ef4c684 100644 --- a/lib/rhashtable.c +++ b/lib/rhashtable.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/log2.h> | 19 | #include <linux/log2.h> |
20 | #include <linux/sched.h> | ||
20 | #include <linux/slab.h> | 21 | #include <linux/slab.h> |
21 | #include <linux/vmalloc.h> | 22 | #include <linux/vmalloc.h> |
22 | #include <linux/mm.h> | 23 | #include <linux/mm.h> |
@@ -412,6 +413,7 @@ int rhashtable_expand(struct rhashtable *ht) | |||
412 | } | 413 | } |
413 | } | 414 | } |
414 | unlock_buckets(new_tbl, old_tbl, new_hash); | 415 | unlock_buckets(new_tbl, old_tbl, new_hash); |
416 | cond_resched(); | ||
415 | } | 417 | } |
416 | 418 | ||
417 | /* Unzip interleaved hash chains */ | 419 | /* Unzip interleaved hash chains */ |
@@ -435,6 +437,7 @@ int rhashtable_expand(struct rhashtable *ht) | |||
435 | complete = false; | 437 | complete = false; |
436 | 438 | ||
437 | unlock_buckets(new_tbl, old_tbl, old_hash); | 439 | unlock_buckets(new_tbl, old_tbl, old_hash); |
440 | cond_resched(); | ||
438 | } | 441 | } |
439 | } | 442 | } |
440 | 443 | ||
@@ -493,6 +496,7 @@ int rhashtable_shrink(struct rhashtable *ht) | |||
493 | tbl->buckets[new_hash + new_tbl->size]); | 496 | tbl->buckets[new_hash + new_tbl->size]); |
494 | 497 | ||
495 | unlock_buckets(new_tbl, tbl, new_hash); | 498 | unlock_buckets(new_tbl, tbl, new_hash); |
499 | cond_resched(); | ||
496 | } | 500 | } |
497 | 501 | ||
498 | /* Publish the new, valid hash table */ | 502 | /* Publish the new, valid hash table */ |