diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 3a07900971c3..f5b90dc137ec 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -9769,6 +9769,7 @@ static int btrfs_rename_exchange(struct inode *old_dir, u64 new_idx = 0; u64 root_objectid; int ret; + int ret2; bool root_log_pinned = false; bool dest_log_pinned = false; @@ -9965,7 +9966,8 @@ out_fail: dest_log_pinned = false; } } - ret = btrfs_end_transaction(trans); + ret2 = btrfs_end_transaction(trans); + ret = ret ? ret : ret2; out_notrans: if (new_ino == BTRFS_FIRST_FREE_OBJECTID) up_read(&fs_info->subvol_sem);