aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/volumes.h
diff options
context:
space:
mode:
authorNikolay Borisov <nborisov@suse.com>2017-10-20 18:10:58 +0300
committerDavid Sterba <dsterba@suse.com>2018-01-22 16:08:10 +0100
commit4660c49f9b4ad50eab410de09eeacc2e3aebf1f5 (patch)
tree89130cb6eb02df2822a16dc5debd7c432fe781e2 /fs/btrfs/volumes.h
parentbtrfs: Fix memory barriers usage with device stats counters (diff)
downloadlinux-dev-4660c49f9b4ad50eab410de09eeacc2e3aebf1f5.tar.xz
linux-dev-4660c49f9b4ad50eab410de09eeacc2e3aebf1f5.zip
btrfs: Remove redundant memory barrier in dev stats
As per atomic_t.txt documentation : - RMW operations that have a return value are fully ordered; atomic_xchg is one such operation so it already includes everything it needs w.r.t memory ordering and add a comment to be more explicit about that. Signed-off-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/volumes.h')
-rw-r--r--fs/btrfs/volumes.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h
index 38fd368ddfe7..177814a7c758 100644
--- a/fs/btrfs/volumes.h
+++ b/fs/btrfs/volumes.h
@@ -519,7 +519,13 @@ static inline int btrfs_dev_stat_read_and_reset(struct btrfs_device *dev,
int ret;
ret = atomic_xchg(dev->dev_stat_values + index, 0);
- smp_mb__before_atomic();
+ /*
+ * atomic_xchg implies a full memory barriers as per atomic_t.txt:
+ * - RMW operations that have a return value are fully ordered;
+ *
+ * This implicit memory barriers is paired with the smp_rmb in
+ * btrfs_run_dev_stats
+ */
atomic_inc(&dev->dev_stats_ccnt);
return ret;
}