X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=block%2Fas-iosched.c;h=e25a5d79ab2715b2f3a07ce3331e46cd45ab86f1;hb=6c8b44abc86a3e23dd1a22c0ee187f06bd7c7f5d;hp=296708ceceb2d62a8bacd8a954efeb1108d5547e;hpb=95d465fd750897ab32462a6702fbfe1b122cbbc0;p=linux-2.6 diff --git a/block/as-iosched.c b/block/as-iosched.c index 296708cece..e25a5d79ab 100644 --- a/block/as-iosched.c +++ b/block/as-iosched.c @@ -1844,9 +1844,10 @@ static void __exit as_exit(void) DECLARE_COMPLETION(all_gone); elv_unregister(&iosched_as); ioc_gone = &all_gone; - barrier(); + /* ioc_gone's update must be visible before reading ioc_count */ + smp_wmb(); if (atomic_read(&ioc_count)) - complete(ioc_gone); + wait_for_completion(ioc_gone); synchronize_rcu(); kmem_cache_destroy(arq_pool); }