diff options
Diffstat (limited to 'fs/btrfs/backref.c')
-rw-r--r-- | fs/btrfs/backref.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c index 3f75895c919b..8f7d1237b7a0 100644 --- a/fs/btrfs/backref.c +++ b/fs/btrfs/backref.c | |||
@@ -179,7 +179,8 @@ static int __add_prelim_ref(struct list_head *head, u64 root_id, | |||
179 | 179 | ||
180 | static int add_all_parents(struct btrfs_root *root, struct btrfs_path *path, | 180 | static int add_all_parents(struct btrfs_root *root, struct btrfs_path *path, |
181 | struct ulist *parents, int level, | 181 | struct ulist *parents, int level, |
182 | struct btrfs_key *key, u64 wanted_disk_byte, | 182 | struct btrfs_key *key, u64 time_seq, |
183 | u64 wanted_disk_byte, | ||
183 | const u64 *extent_item_pos) | 184 | const u64 *extent_item_pos) |
184 | { | 185 | { |
185 | int ret; | 186 | int ret; |
@@ -212,7 +213,7 @@ add_parent: | |||
212 | */ | 213 | */ |
213 | while (1) { | 214 | while (1) { |
214 | eie = NULL; | 215 | eie = NULL; |
215 | ret = btrfs_next_leaf(root, path); | 216 | ret = btrfs_next_old_leaf(root, path, time_seq); |
216 | if (ret < 0) | 217 | if (ret < 0) |
217 | return ret; | 218 | return ret; |
218 | if (ret) | 219 | if (ret) |
@@ -294,18 +295,10 @@ static int __resolve_indirect_ref(struct btrfs_fs_info *fs_info, | |||
294 | goto out; | 295 | goto out; |
295 | } | 296 | } |
296 | 297 | ||
297 | if (level == 0) { | 298 | if (level == 0) |
298 | if (ret == 1 && path->slots[0] >= btrfs_header_nritems(eb)) { | ||
299 | ret = btrfs_next_leaf(root, path); | ||
300 | if (ret) | ||
301 | goto out; | ||
302 | eb = path->nodes[0]; | ||
303 | } | ||
304 | |||
305 | btrfs_item_key_to_cpu(eb, &key, path->slots[0]); | 299 | btrfs_item_key_to_cpu(eb, &key, path->slots[0]); |
306 | } | ||
307 | 300 | ||
308 | ret = add_all_parents(root, path, parents, level, &key, | 301 | ret = add_all_parents(root, path, parents, level, &key, time_seq, |
309 | ref->wanted_disk_byte, extent_item_pos); | 302 | ref->wanted_disk_byte, extent_item_pos); |
310 | out: | 303 | out: |
311 | btrfs_free_path(path); | 304 | btrfs_free_path(path); |