On 2018年02月28日 18:13, Lu Fengqi wrote:
> Instead of the disk_bytenr and disk_num_bytes of the extent_item which the
> file extent references, we should output the objectid and offset of the
> file extent. And the leaf may be shared by the file trees, we should print
> the objectid of the root and the owner of the leaf.
>
> Fixes: b0d360b541f0 ("btrfs-progs: check: introduce function to check data backref in extent tree")
> Signed-off-by: Lu Fengqi <lufq.fnst@xxxxxxxxxxxxxx>
> ---
> V2: Output the objectid of the root and the owner of the leaf.
>
> check/mode-lowmem.c | 11 ++++++-----
> 1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/check/mode-lowmem.c b/check/mode-lowmem.c
> index 62bcf3d2e126..f37b1b2c1571 100644
> --- a/check/mode-lowmem.c
> +++ b/check/mode-lowmem.c
> @@ -2631,9 +2631,9 @@ static int check_extent_data_item(struct btrfs_root *root,
>
> if (!(extent_flags & BTRFS_EXTENT_FLAG_DATA)) {
> error(
> - "extent[%llu %llu] backref type mismatch, wanted bit: %llx",
> - disk_bytenr, disk_num_bytes,
> - BTRFS_EXTENT_FLAG_DATA);
> +"file extent[%llu %llu] root %llu owner %llu backref type mismatch, wanted bit: %llx",
> + fi_key.objectid, fi_key.offset, root->objectid, owner,
Indeed this is much easier to identify the problem.
Reviewed-by: Qu Wenruo <wqu@xxxxxxxx>
Thanks,
Qu
> + BTRFS_EXTENT_FLAG_DATA);
> err |= BACKREF_MISMATCH;
> }
>
> @@ -2722,8 +2722,9 @@ out:
> err |= BACKREF_MISSING;
> btrfs_release_path(&path);
> if (err & BACKREF_MISSING) {
> - error("data extent[%llu %llu] backref lost",
> - disk_bytenr, disk_num_bytes);
> + error(
> + "file extent[%llu %llu] root %llu owner %llu backref lost",
> + fi_key.objectid, fi_key.offset, root->objectid, owner);
> }
> return err;
> }
>
Attachment:
signature.asc
Description: OpenPGP digital signature
