mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 11:03:43 +02:00
btrfs: stop checking for -EEXIST return value from btrfs_uuid_tree_add()
We never return -EEXIST from btrfs_uuid_tree_add(), if the item already exists we extend it, so it's pointless to check for such return value. Furthermore, in create_pending_snapshot(), the logic is completely broken. The goal was to not error out and abort the transaction in case of -EEXIST but we left 'ret' with the -EEXIST value, so we end up setting pending->error to -EEXIST and return that error up the call chain up to btrfs_commit_transaction(), which will abort the transaction. Reviewed-by: Boris Burkov <boris@bur.io> Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: Filipe Manana <fdmanana@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
f11c3d8559
commit
7aa1788ff0
|
|
@ -3928,7 +3928,7 @@ static long _btrfs_ioctl_set_received_subvol(struct file *file,
|
|||
ret = btrfs_uuid_tree_add(trans, sa->uuid,
|
||||
BTRFS_UUID_KEY_RECEIVED_SUBVOL,
|
||||
btrfs_root_id(root));
|
||||
if (unlikely(ret < 0 && ret != -EEXIST)) {
|
||||
if (unlikely(ret < 0)) {
|
||||
btrfs_abort_transaction(trans, ret);
|
||||
btrfs_end_transaction(trans);
|
||||
goto out;
|
||||
|
|
|
|||
|
|
@ -1918,7 +1918,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
|
|||
*/
|
||||
if (ret == -EOVERFLOW)
|
||||
ret = 0;
|
||||
if (unlikely(ret && ret != -EEXIST)) {
|
||||
if (unlikely(ret)) {
|
||||
btrfs_abort_transaction(trans, ret);
|
||||
goto fail;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user