Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8d25a086 authored by Miao Xie's avatar Miao Xie Committed by Josef Bacik
Browse files

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: default avatarMiao Xie <miaox@cn.fujitsu.com>
Signed-off-by: default avatarJosef Bacik <jbacik@fusionio.com>
parent e58dd74b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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);
}
/*
+2 −1
Original line number Diff line number Diff line
@@ -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;
	}