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,11 +301,15 @@ static int __resolve_indirect_ref(struct btrfs_fs_info *fs_info, ...@@ -301,11 +301,15 @@ 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) {
if (!level) {
WARN_ON(1); WARN_ON(1);
ret = 1; ret = 1;
goto out; 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,
time_seq, ref->wanted_disk_byte, time_seq, ref->wanted_disk_byte,
......
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