diff options
Diffstat (limited to 'block/cfq-iosched.c')
-rw-r--r-- | block/cfq-iosched.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index 67d446de0227..01820b1094e9 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
@@ -2439,9 +2439,10 @@ static void __exit cfq_exit(void) | |||
2439 | DECLARE_COMPLETION(all_gone); | 2439 | DECLARE_COMPLETION(all_gone); |
2440 | elv_unregister(&iosched_cfq); | 2440 | elv_unregister(&iosched_cfq); |
2441 | ioc_gone = &all_gone; | 2441 | ioc_gone = &all_gone; |
2442 | barrier(); | 2442 | /* ioc_gone's update must be visible before reading ioc_count */ |
2443 | smp_wmb(); | ||
2443 | if (atomic_read(&ioc_count)) | 2444 | if (atomic_read(&ioc_count)) |
2444 | complete(ioc_gone); | 2445 | wait_for_completion(ioc_gone); |
2445 | synchronize_rcu(); | 2446 | synchronize_rcu(); |
2446 | cfq_slab_kill(); | 2447 | cfq_slab_kill(); |
2447 | } | 2448 | } |