From: Turbo Fredriksson Date: Sun, 14 Sep 2014 15:47:22 +0000 (+0000) Subject: Linux 3.16 compat: smp_mb__after_clear_bit() X-Git-Tag: zfs-0.8.0-rc1~152^2~212 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e3020723dc43af2bc22af0d68571a61daf9b44d0;p=zfs Linux 3.16 compat: smp_mb__after_clear_bit() The smp_mb__{before,after}_clear_bit functions have been renamed smp_mb__{before,after}_atomic. Rather than adding a compatibility function to handle this the code has been updated to use smp_wmb(). This has the advantage of being a stable functionally equivalent interface. On many architectures smp_mb__after_clear_bit() expands to smp_wmb(). Others might be able to do something slightly more efficient but this will be safe and correct on all of them. Signed-off-by: Turbo Fredriksson Signed-off-by: Brian Behlendorf Closes #386 --- diff --git a/module/spl/spl-kmem.c b/module/spl/spl-kmem.c index 6de513e45..79954eb2a 100644 --- a/module/spl/spl-kmem.c +++ b/module/spl/spl-kmem.c @@ -2365,7 +2365,7 @@ spl_kmem_cache_reap_now(spl_kmem_cache_t *skc, int count) spl_slab_reclaim(skc, count, 1); clear_bit(KMC_BIT_REAPING, &skc->skc_flags); - smp_mb__after_clear_bit(); + smp_wmb(); wake_up_bit(&skc->skc_flags, KMC_BIT_REAPING); out: atomic_dec(&skc->skc_ref);