btrfs: update barrier in should_cow_block
authorDavid Sterba <dsterba@suse.com>
Fri, 16 Mar 2018 01:39:40 +0000 (02:39 +0100)
committerDavid Sterba <dsterba@suse.com>
Sat, 31 Mar 2018 00:01:06 +0000 (02:01 +0200)
Once there was a simple int force_cow that was used with the plain
barriers, and then converted to a bit, so we should use the appropriate
barrier helper.

Other variables in the complex if condition do not depend on a barrier,
so we should be fine in case the atomic barrier becomes a no-op.

Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ctree.c

index 7c8faeb868f4e25cc9bb6da2f7bff0246c5ac600..a2c9d21176e270df3400482767faa2c65d0d0f6d 100644 (file)
@@ -1441,8 +1441,8 @@ static inline int should_cow_block(struct btrfs_trans_handle *trans,
        if (btrfs_is_testing(root->fs_info))
                return 0;
 
-       /* ensure we can see the force_cow */
-       smp_rmb();
+       /* Ensure we can see the FORCE_COW bit */
+       smp_mb__before_atomic();
 
        /*
         * We do not need to cow a block if