[PATCH v2 00/14] btrfs-progs: image: Enhance and bug fixes

WenRuo Qu
2019-07-02T10:25:33Z

This patchset is based on v5.1.1 tag.

With this update, the patchset has the following features:
- various small fixes and enhancements for btrfs-image
* Fix an indent misalign
* Fix an access-beyond-boundary bug
* Fix a confusing error message due to unpopulated errno
* Output error message for chunk tree build error
* Use SZ_* to replace intermediate number
* Verify superblock before restore

- btrfs-image dump support
This introduce a new option -d to dump data.
Due to item size limit, we have to enlarge the existing limit from
256K (enough for tree blocks, but not enough for free space cache) to
256M.
This change will cause incompatibility, thus we have to introduce a
new magic as version. While keeping all other on-disk format the same.

- Reduce memory usage for both compressed and uncompressed images
Originally for compressed extents, we will use 4 * max_pending_size as
output buffer, which can be 1G for 256M newer limit.

Change it to use at most 512K for compressed extent output buf, and
also use 512K fixed buffer size for uncompressed extent.

- btrfs-image restore optimization
This will speed up chunk item search during restore.

Changelog:
v2:
- New small fixes:
* Fix a confusing error message due to unpopulated errno
* Output error message for chunk tree build error

- Fix a regression of previous version
Patch "btrfs-progs: image: Rework how we search chunk tree blocks"
deleted a "ret = 0" line which could cause false early exit.

- Reduce memory usage for data dump

Qu Wenruo (14):
btrfs-progs: image: Use SZ_* to replace intermediate size
btrfs-progs: image: Fix an indent misalign
btrfs-progs: image: Fix an access-beyond-boundary bug when there are
32 online CPUs
btrfs-progs: image: Verify the superblock before restore
btrfs-progs: image: Introduce framework for more dump versions
btrfs-progs: image: Introduce -d option to dump data
btrfs-progs: image: Allow restore to record system chunk ranges for
later usage
btrfs-progs: image: Introduce helper to determine if a tree block is
in the range of system chunks
btrfs-progs: image: Rework how we search chunk tree blocks
btrfs-progs: image: Reduce memory requirement for decompression
btrfs-progs: image: Don't waste memory when we're just extracting
super block
btrfs-progs: image: Reduce memory usage for chunk tree search
btrfs-progs: image: Output error message for chunk tree build error
btrfs-progs: image: Fix error output to show correct return value

disk-io.c | 6 +-
disk-io.h | 1 +
image/main.c | 874 +++++++++++++++++++++++++++++++++++------------
image/metadump.h | 15 +-
4 files changed, 666 insertions(+), 230 deletions(-)

--
2.22.0