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: 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:
Родитель
5119cfc36f
Коммит
ca2037fba6
|
@ -6163,6 +6163,10 @@ again:
|
|||
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 @@ again:
|
|||
}
|
||||
|
||||
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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче