btrfs: avoid unnecessarily setting the fs to RO and error state at balance_level()
authorFilipe Manana <fdmanana@suse.com>
Thu, 8 Jun 2023 10:27:43 +0000 (11:27 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Jun 2023 11:59:38 +0000 (13:59 +0200)
commit87b8e9d06e3315c6f8d478fc8fc0dc4d25cf0e09
tree9ca162a2f4f52b275ade697c0ff3b7ed40fb2e22
parentdaefe4d435d75118af302dae650547b8b760da0b
btrfs: avoid unnecessarily setting the fs to RO and error state at balance_level()

At balance_level(), when trying to promote a child node to a root node, if
we fail to read the child we call btrfs_handle_fs_error(), which turns the
fs to RO mode and sets it to error state as well, causing any ongoing
transaction to abort. This however is not necessary because at that point
we have not made any change yet at balance_level(), so any error reading
the child node does not leaves us in any inconsistent state. Therefore we
can just return the error to the caller.

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>
fs/btrfs/ctree.c