From a0f4abd6e45d164cc39534a78dc6cbd85074e025 Mon Sep 17 00:00:00 2001 From: Miao Xie Date: Tue, 15 Jan 2013 06:27:25 +0000 Subject: [PATCH] --- yaml --- r: 349180 b: refs/heads/master c: 8d25a086eb104297e3ba1fdd180b04cfaaa84797 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/btrfs/super.c | 2 +- trunk/fs/btrfs/transaction.c | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 4129f664558f..6e2d642c85f8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e58dd74bccb4317e39e4b675bf9c6cd133608fac +refs/heads/master: 8d25a086eb104297e3ba1fdd180b04cfaaa84797 diff --git a/trunk/fs/btrfs/super.c b/trunk/fs/btrfs/super.c index 99545df1b86c..d8982e9601d3 100644 --- a/trunk/fs/btrfs/super.c +++ b/trunk/fs/btrfs/super.c @@ -267,7 +267,7 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans, function, line, errstr); return; } - trans->transaction->aborted = errno; + ACCESS_ONCE(trans->transaction->aborted) = errno; __btrfs_std_error(root->fs_info, function, line, errno, NULL); } /* diff --git a/trunk/fs/btrfs/transaction.c b/trunk/fs/btrfs/transaction.c index 87fac9a21ea5..0ef29611fade 100644 --- a/trunk/fs/btrfs/transaction.c +++ b/trunk/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; }