Re: [PATCH 0/6] btrfs-progs: btrfs-image related fixes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2020/5/27 下午6:28, Qu Wenruo wrote:
> This branch can be fetched from github:
> https://github.com/adam900710/btrfs-progs/tree/image_fixes
> 
> Since there are two binary files updates, and one big code move, it's
> recommended to fetch github repo, in case some patches didn't reach mail
> list.
> 
> This is inspried by one log tree replay dead loop bug, where the kind
> reporter, Pierre Abbat <phma@xxxxxxxxxxxx>, gave the btrfs-image to
> reproduce it.
> 
> Then the image fails to pass check due to the existing log tree
> conflicting with device/chunk fixup.
> As log tree blocks are not recorded in extent tree, later COW can use
> log tree blocks and cause transid mismatch.
> 
> To address the problem, this patchset will:
> - Don't do any fixup if the source dump is single device
>   Since the dump has the full super block contents, we can easily check
>   if the source fs is single deivce.
> 
>   The chunk/device fixup is mostly for older btrfs-image behavior, which
>   always restores the fs into SINGLE profile.
>   However since commit 9088ab6a1067 ("btrfs-progs: make btrfs-image
>   restore to support dup"), btrfs-image can restore into DUP profile,
>   allowing us to do exact replay for single device fs.
>   This is patch 5.

As expected, patch 3 can't survive the mail list filter.
It's 402K, so I guess one needs to grab it from github anyway.

Thanks,
Qu
> 
> - Pin down all log tree blocks for fixup
>   For cases we still need to fixup chunk/device items, at least pin down
>   all log tree blocks to avoid transid mimsatch.
>   This is patch 6.
> 
> After above fixes, fsck/012 and fsck/035 fails, due to bad original
> images.
> The old btrfs-image can fixup those bad device total_bytes and
> bytes_used, but that just hides the problem.
> We still need to update those images to make them correct, so here comes
> patch 3 and 4.
> 
> During the debugging of btrfs-image restore, I found dump_superblock()
> would help a lot to expose bad values in images, so is
> btrfs_print_leaf().
> 
> Enahance them to be more handy for usage inside gdb, and here comes
> patch 1 and 2.
> 
> 
> Qu Wenruo (6):
>   btrfs-progs: Allow btrfs_print_leaf() to be called on dummy eb whose
>     fs_info is NULL
>   btrfs-progs: print-tree: Export dump_superblock()
>   btrfs-progs: fsck-tests: Update the image in 012
>   btrfs-progs: fsck-tests: Update the image of test case 035
>   btrfs-progs: image: Don't modify the chunk and device tree if  the
>     source dump is single device
>   btrfs-progs: image: Pin down log tree blocks before fixup
> 
>  cmds/inspect-dump-super.c                     | 454 +-----------------
>  image/main.c                                  |  86 +++-
>  print-tree.c                                  | 449 ++++++++++++++++-
>  print-tree.h                                  |   1 +
>  .../012-leaf-corruption/good.img.xz           | Bin 0 -> 186392 bytes
>  .../012-leaf-corruption/no_data_extent.tar.xz | Bin 130260 -> 0 bytes
>  tests/fsck-tests/012-leaf-corruption/test.sh  |  17 +-
>  .../offset_by_one.img                         | Bin 3072 -> 3072 bytes
>  8 files changed, 540 insertions(+), 467 deletions(-)
>  create mode 100644 tests/fsck-tests/012-leaf-corruption/good.img.xz
>  delete mode 100644 tests/fsck-tests/012-leaf-corruption/no_data_extent.tar.xz
> 

Attachment: signature.asc
Description: OpenPGP digital signature


[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux