mirror of
https://github.com/kdave/btrfs-progs
synced 2025-01-30 09:21:45 +00:00
btrfs-progs: check: lowmem: assign parent early in repair_extent_data_item
The variable @eb is assigned to leaf in fs_tree before insertion of backref. It will cause wrong parent of new inserted backref. Set @parent at beginning to fix the problem. Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: Su Yue <suy.fnst@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
bbf1e8a400
commit
cb1fbe71ae
@ -2535,6 +2535,11 @@ static int repair_extent_data_item(struct btrfs_trans_handle *trans,
|
||||
extent_offset = btrfs_file_extent_offset(eb, fi);
|
||||
offset = file_offset - extent_offset;
|
||||
|
||||
if (nrefs->full_backref[0])
|
||||
parent = btrfs_header_bytenr(eb);
|
||||
else
|
||||
parent = 0;
|
||||
|
||||
/* now repair only adds backref */
|
||||
if ((err & BACKREF_MISSING) == 0)
|
||||
return err;
|
||||
@ -2576,11 +2581,6 @@ static int repair_extent_data_item(struct btrfs_trans_handle *trans,
|
||||
btrfs_release_path(&path);
|
||||
}
|
||||
|
||||
if (nrefs->full_backref[0])
|
||||
parent = btrfs_header_bytenr(eb);
|
||||
else
|
||||
parent = 0;
|
||||
|
||||
ret = btrfs_inc_extent_ref(trans, root, disk_bytenr, num_bytes, parent,
|
||||
root->objectid,
|
||||
parent ? BTRFS_FIRST_FREE_OBJECTID : fi_key.objectid,
|
||||
|
Loading…
Reference in New Issue
Block a user