Messages in this thread Patch in this message | | | From | Davidlohr Bueso <> | Subject | [PATCH] btrfs: optimize barrier usage for Rmw atomics | Date | Wed, 29 Jan 2020 10:03:24 -0800 |
| |
Use smp_mb__after_atomic() instead of smp_mb() and avoid the unnecessary barrier for non LL/SC architectures, such as x86.
Signed-off-by: Davidlohr Bueso <dbueso@suse.de> --- fs/btrfs/btrfs_inode.h | 2 +- fs/btrfs/file.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h index 4e12a477d32e..54e0d2ae22cc 100644 --- a/fs/btrfs/btrfs_inode.h +++ b/fs/btrfs/btrfs_inode.h @@ -325,7 +325,7 @@ struct btrfs_dio_private { static inline void btrfs_inode_block_unlocked_dio(struct btrfs_inode *inode) { set_bit(BTRFS_INODE_READDIO_NEED_LOCK, &inode->runtime_flags); - smp_mb(); + smp_mb__after_atomic(); } static inline void btrfs_inode_resume_unlocked_dio(struct btrfs_inode *inode) diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index a16da274c9aa..ea79ab068079 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -2143,7 +2143,7 @@ int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync) } atomic_inc(&root->log_batch); - smp_mb(); + smp_mb__after_atomic(); if (btrfs_inode_in_log(BTRFS_I(inode), fs_info->generation) || BTRFS_I(inode)->last_trans <= fs_info->last_trans_committed) { /* -- 2.16.4
| |