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

Qu Wenruo
2019-07-04T02:55:09Z

[-- Attachment #1.1: Type: text/plain, Size: 4151 bytes --]

On 2019/7/4 上午10:13, Anand Jain wrote:
> On 2/7/19 6:07 PM, WenRuo Qu wrote:
>> 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
>>
>
> How about separating the -d option enhancement patch from rest of
> the patches? Looks like -d option patch is only one, and the rest
> can go independently?.

For all the minor fixes like error message, the already merged ones, and
the chunk tree search part, no problem.

For the memory reduce part, it's only needed if we're going to support
data dump.

Unfortunately (or fortunately), the decompression memory usage reduction
is only needed if we enlarge the max_pending_size (used by data dump).

The original max_pending_size is just 256K, 4 * 256K per-thread is just
a piece of cake for modern systems.

If we don't need data dump, then the memory reduce part doesn't make
much sense.

I'll update the patchset to sort them into the following parts:
- Minor fixes
- Chunk tree search enhancement
- Data dump
- Memory reduction

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

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]