diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index 604241e6e2c1ed22d52fd3b49b46c776c47f72da..ff3e0d4cf4b4873ae33c3ebbe167c1a1468ccfe6 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c @@ -262,8 +262,10 @@ static noinline int join_transaction(struct btrfs_fs_info *fs_info, cur_trans = fs_info->running_transaction; if (cur_trans) { if (TRANS_ABORTED(cur_trans)) { + const int abort_error = cur_trans->aborted; + spin_unlock(&fs_info->trans_lock); - return cur_trans->aborted; + return abort_error; } if (btrfs_blocked_trans_types[cur_trans->state] & type) { spin_unlock(&fs_info->trans_lock);