diff options
Diffstat (limited to 'block/as-iosched.c')
-rw-r--r-- | block/as-iosched.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/block/as-iosched.c b/block/as-iosched.c index 296708ceceb2..e25a5d79ab27 100644 --- a/block/as-iosched.c +++ b/block/as-iosched.c | |||
@@ -1844,9 +1844,10 @@ static void __exit as_exit(void) | |||
1844 | DECLARE_COMPLETION(all_gone); | 1844 | DECLARE_COMPLETION(all_gone); |
1845 | elv_unregister(&iosched_as); | 1845 | elv_unregister(&iosched_as); |
1846 | ioc_gone = &all_gone; | 1846 | ioc_gone = &all_gone; |
1847 | barrier(); | 1847 | /* ioc_gone's update must be visible before reading ioc_count */ |
1848 | smp_wmb(); | ||
1848 | if (atomic_read(&ioc_count)) | 1849 | if (atomic_read(&ioc_count)) |
1849 | complete(ioc_gone); | 1850 | wait_for_completion(ioc_gone); |
1850 | synchronize_rcu(); | 1851 | synchronize_rcu(); |
1851 | kmem_cache_destroy(arq_pool); | 1852 | kmem_cache_destroy(arq_pool); |
1852 | } | 1853 | } |