Message ID | 20210429090658.245238-1-wqu@suse.com (mailing list archive) |
---|---|
Headers | show |
Series | btrfs-progs: image: make restored image file to be properly enlarged | expand |
On Thu, Apr 29, 2021 at 05:06:55PM +0800, Qu Wenruo wrote: > Recent kernel will refuse to mount restored image, even the source fs is > empty: > # mkfs.btrfs -f /dev/test/test > # btrfs-image /dev/test/test /tmp/dump > # btrfs-image -r /tmp/dump ~/test.img > # mount ~/test.img /mnt/btrfs > mount: /mnt/btrfs: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error. > # dmesg -t | tail -n 7 > loop0: detected capacity change from 10592 to 0 > BTRFS info (device loop0): disk space caching is enabled > BTRFS info (device loop0): has skinny extents > BTRFS info (device loop0): flagging fs with big metadata feature > BTRFS error (device loop0): device total_bytes should be at most 5423104 but found 10737418240 > BTRFS error (device loop0): failed to read chunk tree: -22 > BTRFS error (device loop0): open_ctree failed > > This is triggered by a recent kernel commit 3a160a933111 ("btrfs: drop never met disk total > bytes check in verify_one_dev_extent"). > > But the root cause is, we didn't enlarge the output file if the source > image only contains single device. > > This bug won't affect restore to block device, or the destination file > is already large enough. > > This patchset will fix the problem, and with new test case to detect > such problem. > > Also remove one dead code exposed during the development. > > Changelog: > v2: > - Comments word change > - Only enlarge the file when the target file is smaller than expected > device size > - Change the prefix of the 1st patch > From "btrfs" to "btrfs-progs" > > Qu Wenruo (3): > btrfs-progs: image: remove the dead stat() call > btrfs-progs: image: enlarge the output file if no tree modification is > needed for restore > btrfs-progs: misc-tests: add test to ensure the restored image can be > mounted Added to devel, thanks.