Commit 8f1e1b26 authored by Filipe Manana's avatar Filipe Manana Committed by David Sterba
Browse files

btrfs: unfold transaction aborts when replaying log trees



We have a single line doing a transaction abort in case either we got an
error from btrfs_get_fs_root() different from -ENOENT or we got an error
from btrfs_pin_extent_for_log_replay(), making it hard to figure out which
function call failed when looking at a transaction abort massages and
stack trace in dmesg. Change this to have an explicit transaction abort
for each one of the two cases.

Reviewed-by: default avatarQu Wenruo <wqu@suse.com>
Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 2a946bf6
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -7255,6 +7255,11 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree)
						   true);
		if (IS_ERR(wc.replay_dest)) {
			ret = PTR_ERR(wc.replay_dest);
			if (ret != -ENOENT) {
				btrfs_put_root(log);
				btrfs_abort_transaction(trans, ret);
				goto error;
			}

			/*
			 * We didn't find the subvol, likely because it was
@@ -7267,7 +7272,6 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree)
			 * block from being modified, and we'll just bail for
			 * each subsequent pass.
			 */
			if (ret == -ENOENT)
			ret = btrfs_pin_extent_for_log_replay(trans, log->node);
			btrfs_put_root(log);