Commit 9345457f authored by Jan Schmidt's avatar Jan Schmidt

Btrfs: support root level changes in __resolve_indirect_ref

With the tree mod log, we can have a tree that's two levels high, but
btrfs_search_old_slot may still return a path with the tree root at level
one instead. __resolve_indirect_ref must care for this and accept parents in
a lower level than expected.
Signed-off-by: default avatarJan Schmidt <list.btrfs@jan-o-sch.net>
parent 8ca78f3e
...@@ -301,10 +301,14 @@ static int __resolve_indirect_ref(struct btrfs_fs_info *fs_info, ...@@ -301,10 +301,14 @@ static int __resolve_indirect_ref(struct btrfs_fs_info *fs_info,
goto out; goto out;
eb = path->nodes[level]; eb = path->nodes[level];
if (!eb) { while (!eb) {
WARN_ON(1); if (!level) {
ret = 1; WARN_ON(1);
goto out; ret = 1;
goto out;
}
level--;
eb = path->nodes[level];
} }
ret = add_all_parents(root, path, parents, level, &ref->key_for_search, ret = add_all_parents(root, path, parents, level, &ref->key_for_search,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment