mirror of https://gitee.com/openkylin/linux.git
btrfs: handle extent reference errors in do_relocation
We can already deal with errors appropriately from do_relocation, simply handle any errors that come from changing the refs at this point cleanly. We have to abort the transaction if we fail here as we've modified metadata at this point. Signed-off-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
253e258c34
commit
eb6b7fb4b5
|
@ -2437,10 +2437,11 @@ static int do_relocation(struct btrfs_trans_handle *trans,
|
|||
btrfs_init_tree_ref(&ref, node->level,
|
||||
btrfs_header_owner(upper->eb));
|
||||
ret = btrfs_inc_extent_ref(trans, &ref);
|
||||
BUG_ON(ret);
|
||||
|
||||
ret = btrfs_drop_subtree(trans, root, eb, upper->eb);
|
||||
BUG_ON(ret);
|
||||
if (!ret)
|
||||
ret = btrfs_drop_subtree(trans, root, eb,
|
||||
upper->eb);
|
||||
if (ret)
|
||||
btrfs_abort_transaction(trans, ret);
|
||||
}
|
||||
next:
|
||||
if (!upper->pending)
|
||||
|
|
Loading…
Reference in New Issue