btrfs: remove err variable from btrfs_delete_subvolume
[ Upstream commit ee0d904fd9c5662c58a737c77384f8959fdc8d12 ] Use only a single 'ret' to control whether we should abort the transaction or not. That's fine, because if we abort a transaction then btrfs_end_transaction will return the same value as passed to btrfs_abort_transaction. No semantic changes. Signed-off-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com> Stable-dep-of: 3324d0547861 ("btrfs: avoid copying BTRFS_ROOT_SUBVOL_DEAD flag to snapshot of subvolume being deleted") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
d300f8ebc2
commit
b8d08e058f
1 changed files with 7 additions and 14 deletions
|
@ -4007,7 +4007,6 @@ int btrfs_delete_subvolume(struct inode *dir, struct dentry *dentry)
|
||||||
struct btrfs_block_rsv block_rsv;
|
struct btrfs_block_rsv block_rsv;
|
||||||
u64 root_flags;
|
u64 root_flags;
|
||||||
int ret;
|
int ret;
|
||||||
int err;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Don't allow to delete a subvolume with send in progress. This is
|
* Don't allow to delete a subvolume with send in progress. This is
|
||||||
|
@ -4036,8 +4035,8 @@ int btrfs_delete_subvolume(struct inode *dir, struct dentry *dentry)
|
||||||
|
|
||||||
down_write(&fs_info->subvol_sem);
|
down_write(&fs_info->subvol_sem);
|
||||||
|
|
||||||
err = may_destroy_subvol(dest);
|
ret = may_destroy_subvol(dest);
|
||||||
if (err)
|
if (ret)
|
||||||
goto out_up_write;
|
goto out_up_write;
|
||||||
|
|
||||||
btrfs_init_block_rsv(&block_rsv, BTRFS_BLOCK_RSV_TEMP);
|
btrfs_init_block_rsv(&block_rsv, BTRFS_BLOCK_RSV_TEMP);
|
||||||
|
@ -4046,13 +4045,13 @@ int btrfs_delete_subvolume(struct inode *dir, struct dentry *dentry)
|
||||||
* two for dir entries,
|
* two for dir entries,
|
||||||
* two for root ref/backref.
|
* two for root ref/backref.
|
||||||
*/
|
*/
|
||||||
err = btrfs_subvolume_reserve_metadata(root, &block_rsv, 5, true);
|
ret = btrfs_subvolume_reserve_metadata(root, &block_rsv, 5, true);
|
||||||
if (err)
|
if (ret)
|
||||||
goto out_up_write;
|
goto out_up_write;
|
||||||
|
|
||||||
trans = btrfs_start_transaction(root, 0);
|
trans = btrfs_start_transaction(root, 0);
|
||||||
if (IS_ERR(trans)) {
|
if (IS_ERR(trans)) {
|
||||||
err = PTR_ERR(trans);
|
ret = PTR_ERR(trans);
|
||||||
goto out_release;
|
goto out_release;
|
||||||
}
|
}
|
||||||
trans->block_rsv = &block_rsv;
|
trans->block_rsv = &block_rsv;
|
||||||
|
@ -4062,7 +4061,6 @@ int btrfs_delete_subvolume(struct inode *dir, struct dentry *dentry)
|
||||||
|
|
||||||
ret = btrfs_unlink_subvol(trans, dir, dentry);
|
ret = btrfs_unlink_subvol(trans, dir, dentry);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
err = ret;
|
|
||||||
btrfs_abort_transaction(trans, ret);
|
btrfs_abort_transaction(trans, ret);
|
||||||
goto out_end_trans;
|
goto out_end_trans;
|
||||||
}
|
}
|
||||||
|
@ -4080,7 +4078,6 @@ int btrfs_delete_subvolume(struct inode *dir, struct dentry *dentry)
|
||||||
dest->root_key.objectid);
|
dest->root_key.objectid);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
btrfs_abort_transaction(trans, ret);
|
btrfs_abort_transaction(trans, ret);
|
||||||
err = ret;
|
|
||||||
goto out_end_trans;
|
goto out_end_trans;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4090,7 +4087,6 @@ int btrfs_delete_subvolume(struct inode *dir, struct dentry *dentry)
|
||||||
dest->root_key.objectid);
|
dest->root_key.objectid);
|
||||||
if (ret && ret != -ENOENT) {
|
if (ret && ret != -ENOENT) {
|
||||||
btrfs_abort_transaction(trans, ret);
|
btrfs_abort_transaction(trans, ret);
|
||||||
err = ret;
|
|
||||||
goto out_end_trans;
|
goto out_end_trans;
|
||||||
}
|
}
|
||||||
if (!btrfs_is_empty_uuid(dest->root_item.received_uuid)) {
|
if (!btrfs_is_empty_uuid(dest->root_item.received_uuid)) {
|
||||||
|
@ -4100,7 +4096,6 @@ int btrfs_delete_subvolume(struct inode *dir, struct dentry *dentry)
|
||||||
dest->root_key.objectid);
|
dest->root_key.objectid);
|
||||||
if (ret && ret != -ENOENT) {
|
if (ret && ret != -ENOENT) {
|
||||||
btrfs_abort_transaction(trans, ret);
|
btrfs_abort_transaction(trans, ret);
|
||||||
err = ret;
|
|
||||||
goto out_end_trans;
|
goto out_end_trans;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4111,14 +4106,12 @@ out_end_trans:
|
||||||
trans->block_rsv = NULL;
|
trans->block_rsv = NULL;
|
||||||
trans->bytes_reserved = 0;
|
trans->bytes_reserved = 0;
|
||||||
ret = btrfs_end_transaction(trans);
|
ret = btrfs_end_transaction(trans);
|
||||||
if (ret && !err)
|
|
||||||
err = ret;
|
|
||||||
inode->i_flags |= S_DEAD;
|
inode->i_flags |= S_DEAD;
|
||||||
out_release:
|
out_release:
|
||||||
btrfs_subvolume_release_metadata(root, &block_rsv);
|
btrfs_subvolume_release_metadata(root, &block_rsv);
|
||||||
out_up_write:
|
out_up_write:
|
||||||
up_write(&fs_info->subvol_sem);
|
up_write(&fs_info->subvol_sem);
|
||||||
if (err) {
|
if (ret) {
|
||||||
spin_lock(&dest->root_item_lock);
|
spin_lock(&dest->root_item_lock);
|
||||||
root_flags = btrfs_root_flags(&dest->root_item);
|
root_flags = btrfs_root_flags(&dest->root_item);
|
||||||
btrfs_set_root_flags(&dest->root_item,
|
btrfs_set_root_flags(&dest->root_item,
|
||||||
|
@ -4136,7 +4129,7 @@ out_up_write:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return err;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int btrfs_rmdir(struct inode *dir, struct dentry *dentry)
|
static int btrfs_rmdir(struct inode *dir, struct dentry *dentry)
|
||||||
|
|
Loading…
Add table
Reference in a new issue