Commit ca2037fb authored by Josef Bacik's avatar Josef Bacik Committed by David Sterba
Browse files

btrfs: hold a ref on the root in btrfs_recover_log_trees



We replay the log into arbitrary fs roots, hold a ref on the root while
we're doing this.

Signed-off-by: default avatarJosef Bacik <josef@toxicpanda.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 5119cfc3
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -6163,6 +6163,10 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree)
		tmp_key.offset = (u64)-1;

		wc.replay_dest = btrfs_get_fs_root(fs_info, &tmp_key, true);
		if (!IS_ERR(wc.replay_dest)) {
			if (!btrfs_grab_fs_root(wc.replay_dest))
				wc.replay_dest = ERR_PTR(-ENOENT);
		}
		if (IS_ERR(wc.replay_dest)) {
			ret = PTR_ERR(wc.replay_dest);

@@ -6219,6 +6223,7 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree)
		}

		wc.replay_dest->log_root = NULL;
		btrfs_put_fs_root(wc.replay_dest);
		free_extent_buffer(log->node);
		free_extent_buffer(log->commit_root);
		kfree(log);