X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=block%2Fas-iosched.c;h=e25a5d79ab2715b2f3a07ce3331e46cd45ab86f1;hb=e0de0206a2a37cd3e0ba9954d9f863e11d6d1782;hp=296708ceceb2d62a8bacd8a954efeb1108d5547e;hpb=e572ec7e4e432de7ecf7bd2e62117646fa64e518;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); }