summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/transaction.c
diff options
context:
space:
mode:
authorMiao Xie <miaox@cn.fujitsu.com>2013-01-15 07:27:25 +0100
committerJosef Bacik <jbacik@fusionio.com>2013-01-24 18:51:23 +0100
commit8d25a086eb104297e3ba1fdd180b04cfaaa84797 (patch)
tree075e3a0e731b08a418ad65dfd4e0bb53818a40c1 /fs/btrfs/transaction.c
parentBtrfs: put csums on the right ordered extent (diff)
downloadlinux-8d25a086eb104297e3ba1fdd180b04cfaaa84797.tar.xz
linux-8d25a086eb104297e3ba1fdd180b04cfaaa84797.zip
Btrfs: Add ACCESS_ONCE() to transaction->abort accesses
We may access and update transaction->aborted on the different CPUs without lock, so we need ACCESS_ONCE() wrapper to prevent the compiler from creating unsolicited accesses and make sure we can get the right value. Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Diffstat (limited to '')
-rw-r--r--fs/btrfs/transaction.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index 87fac9a21ea5..0ef29611fade 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -1468,7 +1468,8 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans,
goto cleanup_transaction;
}
- if (cur_trans->aborted) {
+ /* Stop the commit early if ->aborted is set */
+ if (unlikely(ACCESS_ONCE(cur_trans->aborted))) {
ret = cur_trans->aborted;
goto cleanup_transaction;
}