All of lore.kernel.org
 help / color / mirror / Atom feed
From: Derek Su <dereksu@qnap.com>
To: Alberto Garcia <berto@igalia.com>, qemu-devel@nongnu.org
Subject: Re: [PATCH v4 00/30] Add subcluster allocation to qcow2
Date: Tue, 21 Apr 2020 13:06:42 +0800	[thread overview]
Message-ID: <d27d16e3-f6c7-a960-5531-d3ed71b5b92a@qnap.com> (raw)
In-Reply-To: <cover.1584468723.git.berto@igalia.com>

[-- Attachment #1: Type: text/plain, Size: 9974 bytes --]

Hello,

This work is promising and interesting.
I'd like to try this new feature.
Could you please export a branch because the patches cannot be applied to current master?
Thanks.

Regards,
Derek


On 2020/3/18 上午2:15, Alberto Garcia wrote:
> Hi,
>
> here's the new version of the patches to add subcluster allocation
> support to qcow2.
>
> Please refer to the cover letter of the first version for a full
> description of the patches:
>
>     https://lists.gnu.org/archive/html/qemu-block/2019-10/msg00983.html
>
> I think that this version fixes all the problems pointed out by Max
> and Eric during the review a couple of weeks ago. I also dropped the
> RFC tag.
>
> Berto
>
> v4:
> - Patch 01: New patch
> - Patch 02: New patch
> - Patch 05: Documentation updates [Eric]
> - Patch 06: Fix rebase conflicts
> - Patch 07: Change bit order in the subcluster allocation bitmap.
>              Change incompatible bit number. [Max, Eric]
> - Patch 09: Rename QCOW_MAX_SUBCLUSTERS_PER_CLUSTER to
>              QCOW_EXTL2_SUBCLUSTERS_PER_CLUSTER [Eric]
> - Patch 13: Change bit order in the subcluster allocation bitmap [Max, Eric]
>              Add more documentation.
>              Ignore the subcluster bitmap in the L2 entries of
>              compressed clusters.
> - Patch 14: New patch
> - Patch 15: Update to work with the changes from patches 02 and 14.
> - Patch 16: Update to work with the changes from patches 02 and 14.
> - Patch 18: Update to work with the changes from patches 02 and 14.
>              Update documentation.
>              Fix return value on early exit.
> - Patch 20: Make sure to clear the subcluster allocation bitmap when a
>              cluster is unallocated.
> - Patch 26: Update to work with the changes from patch 14.
> - Patch 27: New patch [Max]
> - Patch 28: Update version number, incompatible bit number and test
>              expectations.
> - Patch 30: Add new tests.
>              Make the test verify its own results. [Max]
>
> v3: https://lists.gnu.org/archive/html/qemu-block/2019-12/msg00587.html
> - Patch 01: Rename host_offset to host_cluster_offset and make 'bytes'
>              an unsigned int [Max]
> - Patch 03: Rename cluster_needs_cow to cluster_needs_new_alloc and
>              count_cow_clusters to count_single_write_clusters. Update
>              documentation and add more assertions and checks [Max]
> - Patch 09: Update qcow2_co_truncate() to properly support extended L2
>              entries [Max]
> - Patch 10: Forbid calling set_l2_bitmap() if the image does not have
>              extended L2 entries [Max]
> - Patch 11 (new): Add QCow2SubclusterType [Max]
> - Patch 12 (new): Replace QCOW2_CLUSTER_* with QCOW2_SUBCLUSTER_*
> - Patch 13 (new): Handle QCOW2_SUBCLUSTER_UNALLOCATED_ALLOC
> - Patch 14: Use QCow2SubclusterType instead of QCow2ClusterType [Max]
> - Patch 15: Use QCow2SubclusterType instead of QCow2ClusterType [Max]
> - Patch 19: Don't call set_l2_bitmap() if the image does not have
>              extended L2 entries [Max]
> - Patch 21: Use smaller data types.
> - Patch 22: Don't call set_l2_bitmap() if the image does not have
>              extended L2 entries [Max]
> - Patch 23: Use smaller data types.
> - Patch 25: Update test results and documentation. Move the check for
>              the minimum subcluster size to validate_cluster_size().
> - Patch 26 (new): Add subcluster support to qcow2_measure()
> - Patch 27: Add more tests
>
> v2: https://lists.gnu.org/archive/html/qemu-block/2019-10/msg01642.html
> - Patch 12: Update after the changes in 88f468e546.
> - Patch 21 (new): Clear the L2 bitmap when allocating a compressed
>    cluster. Compressed clusters should have the bitmap all set to 0.
> - Patch 24: Document the new fields in the QAPI documentation [Eric].
> - Patch 25: Allow qcow2 preallocation with backing files.
> - Patch 26: Add some tests for qcow2 images with extended L2 entries.
>
> v1: https://lists.gnu.org/archive/html/qemu-block/2019-10/msg00983.html
>
> Output of git backport-diff against v3:
>
> Key:
> [----] : patches are identical
> [####] : number of functional differences between upstream/downstream patch
> [down] : patch is downstream-only
> The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively
>
> 001/30:[down] 'qcow2: Make Qcow2AioTask store the full host offset'
> 002/30:[down] 'qcow2: Convert qcow2_get_cluster_offset() into qcow2_get_host_offset()'
> 003/30:[----] [-C] 'qcow2: Add calculate_l2_meta()'
> 004/30:[----] [--] 'qcow2: Split cluster_needs_cow() out of count_cow_clusters()'
> 005/30:[0020] [FC] 'qcow2: Process QCOW2_CLUSTER_ZERO_ALLOC clusters in handle_copied()'
> 006/30:[0010] [FC] 'qcow2: Add get_l2_entry() and set_l2_entry()'
> 007/30:[0020] [FC] 'qcow2: Document the Extended L2 Entries feature'
> 008/30:[----] [--] 'qcow2: Add dummy has_subclusters() function'
> 009/30:[0004] [FC] 'qcow2: Add subcluster-related fields to BDRVQcow2State'
> 010/30:[----] [--] 'qcow2: Add offset_to_sc_index()'
> 011/30:[----] [-C] 'qcow2: Add l2_entry_size()'
> 012/30:[----] [--] 'qcow2: Update get/set_l2_entry() and add get/set_l2_bitmap()'
> 013/30:[0046] [FC] 'qcow2: Add QCow2SubclusterType and qcow2_get_subcluster_type()'
> 014/30:[down] 'qcow2: Add cluster type parameter to qcow2_get_host_offset()'
> 015/30:[0082] [FC] 'qcow2: Replace QCOW2_CLUSTER_* with QCOW2_SUBCLUSTER_*'
> 016/30:[0002] [FC] 'qcow2: Handle QCOW2_SUBCLUSTER_UNALLOCATED_ALLOC'
> 017/30:[----] [-C] 'qcow2: Add subcluster support to calculate_l2_meta()'
> 018/30:[down] 'qcow2: Add subcluster support to qcow2_get_host_offset()'
> 019/30:[----] [--] 'qcow2: Add subcluster support to zero_in_l2_slice()'
> 020/30:[0012] [FC] 'qcow2: Add subcluster support to discard_in_l2_slice()'
> 021/30:[----] [--] 'qcow2: Add subcluster support to check_refcounts_l2()'
> 022/30:[----] [--] 'qcow2: Fix offset calculation in handle_dependencies()'
> 023/30:[----] [-C] 'qcow2: Update L2 bitmap in qcow2_alloc_cluster_link_l2()'
> 024/30:[----] [--] 'qcow2: Clear the L2 bitmap when allocating a compressed cluster'
> 025/30:[----] [--] 'qcow2: Add subcluster support to handle_alloc_space()'
> 026/30:[0006] [FC] 'qcow2: Restrict qcow2_co_pwrite_zeroes() to full clusters only'
> 027/30:[down] 'qcow2: Assert that expand_zero_clusters_in_l1() does not support subclusters'
> 028/30:[0019] [FC] 'qcow2: Add the 'extended_l2' option and the QCOW2_INCOMPAT_EXTL2 bit'
> 029/30:[----] [--] 'qcow2: Add subcluster support to qcow2_measure()'
> 030/30:[0313] [FC] 'iotests: Add tests for qcow2 images with extended L2 entries'
>
> Alberto Garcia (30):
>    qcow2: Make Qcow2AioTask store the full host offset
>    qcow2: Convert qcow2_get_cluster_offset() into qcow2_get_host_offset()
>    qcow2: Add calculate_l2_meta()
>    qcow2: Split cluster_needs_cow() out of count_cow_clusters()
>    qcow2: Process QCOW2_CLUSTER_ZERO_ALLOC clusters in handle_copied()
>    qcow2: Add get_l2_entry() and set_l2_entry()
>    qcow2: Document the Extended L2 Entries feature
>    qcow2: Add dummy has_subclusters() function
>    qcow2: Add subcluster-related fields to BDRVQcow2State
>    qcow2: Add offset_to_sc_index()
>    qcow2: Add l2_entry_size()
>    qcow2: Update get/set_l2_entry() and add get/set_l2_bitmap()
>    qcow2: Add QCow2SubclusterType and qcow2_get_subcluster_type()
>    qcow2: Add cluster type parameter to qcow2_get_host_offset()
>    qcow2: Replace QCOW2_CLUSTER_* with QCOW2_SUBCLUSTER_*
>    qcow2: Handle QCOW2_SUBCLUSTER_UNALLOCATED_ALLOC
>    qcow2: Add subcluster support to calculate_l2_meta()
>    qcow2: Add subcluster support to qcow2_get_host_offset()
>    qcow2: Add subcluster support to zero_in_l2_slice()
>    qcow2: Add subcluster support to discard_in_l2_slice()
>    qcow2: Add subcluster support to check_refcounts_l2()
>    qcow2: Fix offset calculation in handle_dependencies()
>    qcow2: Update L2 bitmap in qcow2_alloc_cluster_link_l2()
>    qcow2: Clear the L2 bitmap when allocating a compressed cluster
>    qcow2: Add subcluster support to handle_alloc_space()
>    qcow2: Restrict qcow2_co_pwrite_zeroes() to full clusters only
>    qcow2: Assert that expand_zero_clusters_in_l1() does not support
>      subclusters
>    qcow2: Add the 'extended_l2' option and the QCOW2_INCOMPAT_EXTL2 bit
>    qcow2: Add subcluster support to qcow2_measure()
>    iotests: Add tests for qcow2 images with extended L2 entries
>
>   docs/interop/qcow2.txt           |  68 ++-
>   docs/qcow2-cache.txt             |  19 +-
>   qapi/block-core.json             |   7 +
>   block/qcow2.h                    | 178 +++++++-
>   include/block/block_int.h        |   1 +
>   block/qcow2-cluster.c            | 696 ++++++++++++++++++++-----------
>   block/qcow2-refcount.c           |  38 +-
>   block/qcow2.c                    | 257 +++++++-----
>   tests/qemu-iotests/031.out       |   8 +-
>   tests/qemu-iotests/036.out       |   4 +-
>   tests/qemu-iotests/049.out       | 102 ++---
>   tests/qemu-iotests/060.out       |   1 +
>   tests/qemu-iotests/061           |   6 +
>   tests/qemu-iotests/061.out       |  25 +-
>   tests/qemu-iotests/065           |  18 +-
>   tests/qemu-iotests/082.out       |  48 ++-
>   tests/qemu-iotests/085.out       |  38 +-
>   tests/qemu-iotests/144.out       |   4 +-
>   tests/qemu-iotests/182.out       |   2 +-
>   tests/qemu-iotests/185.out       |   8 +-
>   tests/qemu-iotests/198.out       |   2 +
>   tests/qemu-iotests/206.out       |   4 +
>   tests/qemu-iotests/242.out       |   5 +
>   tests/qemu-iotests/255.out       |   8 +-
>   tests/qemu-iotests/271           | 359 ++++++++++++++++
>   tests/qemu-iotests/271.out       | 244 +++++++++++
>   tests/qemu-iotests/280.out       |   2 +-
>   tests/qemu-iotests/common.filter |   1 +
>   tests/qemu-iotests/group         |   1 +
>   29 files changed, 1682 insertions(+), 472 deletions(-)
>   create mode 100755 tests/qemu-iotests/271
>   create mode 100644 tests/qemu-iotests/271.out
>


[-- Attachment #2: Type: text/html, Size: 11120 bytes --]

  parent reply	other threads:[~2020-04-21  5:07 UTC|newest]

Thread overview: 128+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-17 18:15 [PATCH v4 00/30] Add subcluster allocation to qcow2 Alberto Garcia
2020-03-17 18:15 ` [PATCH v4 01/30] qcow2: Make Qcow2AioTask store the full host offset Alberto Garcia
2020-03-18 11:23   ` Eric Blake
2020-04-08 10:23   ` Max Reitz
2020-04-09  6:49   ` Vladimir Sementsov-Ogievskiy
2020-03-17 18:15 ` [PATCH v4 02/30] qcow2: Convert qcow2_get_cluster_offset() into qcow2_get_host_offset() Alberto Garcia
2020-03-18 12:08   ` Eric Blake
2020-04-08 10:51   ` Max Reitz
2020-04-08 17:29     ` Alberto Garcia
2020-04-09  7:57     ` Vladimir Sementsov-Ogievskiy
2020-04-09 14:35       ` Alberto Garcia
2020-04-09  7:50   ` Vladimir Sementsov-Ogievskiy
2020-04-09 14:45     ` Alberto Garcia
2020-03-17 18:16 ` [PATCH v4 03/30] qcow2: Add calculate_l2_meta() Alberto Garcia
2020-04-09  8:30   ` Vladimir Sementsov-Ogievskiy
2020-04-09 15:12     ` Alberto Garcia
2020-04-09 18:47       ` Vladimir Sementsov-Ogievskiy
2020-03-17 18:16 ` [PATCH v4 04/30] qcow2: Split cluster_needs_cow() out of count_cow_clusters() Alberto Garcia
2020-03-17 18:16 ` [PATCH v4 05/30] qcow2: Process QCOW2_CLUSTER_ZERO_ALLOC clusters in handle_copied() Alberto Garcia
2020-04-09 10:59   ` Vladimir Sementsov-Ogievskiy
2020-04-09 16:08     ` Alberto Garcia
2020-03-17 18:16 ` [PATCH v4 06/30] qcow2: Add get_l2_entry() and set_l2_entry() Alberto Garcia
2020-04-10  8:48   ` Vladimir Sementsov-Ogievskiy
2020-03-17 18:16 ` [PATCH v4 07/30] qcow2: Document the Extended L2 Entries feature Alberto Garcia
2020-04-08 11:09   ` Max Reitz
2020-04-09 15:12   ` Eric Blake
2020-04-10  9:29     ` Vladimir Sementsov-Ogievskiy
2020-04-14 14:50       ` Alberto Garcia
2020-04-14 16:19         ` Vladimir Sementsov-Ogievskiy
2020-04-14 16:30           ` Alberto Garcia
2020-04-14 18:06             ` Vladimir Sementsov-Ogievskiy
2020-04-14 18:13               ` Alberto Garcia
2020-04-15 19:11       ` Alberto Garcia
2020-04-15 21:13         ` Eric Blake
2020-04-10 12:01     ` Alberto Garcia
2020-04-14 18:16     ` Alberto Garcia
2020-04-14 18:23       ` Eric Blake
2020-04-14 18:25         ` Eric Blake
2020-03-17 18:16 ` [PATCH v4 08/30] qcow2: Add dummy has_subclusters() function Alberto Garcia
2020-04-10  9:11   ` Vladimir Sementsov-Ogievskiy
2020-03-17 18:16 ` [PATCH v4 09/30] qcow2: Add subcluster-related fields to BDRVQcow2State Alberto Garcia
2020-04-08 11:12   ` Max Reitz
2020-04-10  9:45   ` Vladimir Sementsov-Ogievskiy
2020-03-17 18:16 ` [PATCH v4 10/30] qcow2: Add offset_to_sc_index() Alberto Garcia
2020-04-13 11:02   ` Vladimir Sementsov-Ogievskiy
2020-03-17 18:16 ` [PATCH v4 11/30] qcow2: Add l2_entry_size() Alberto Garcia
2020-04-14  9:44   ` Vladimir Sementsov-Ogievskiy
2020-04-14 12:20     ` Alberto Garcia
2020-04-14 12:29       ` Vladimir Sementsov-Ogievskiy
2020-04-14 12:33         ` Alberto Garcia
2020-04-14 12:39           ` Vladimir Sementsov-Ogievskiy
2020-04-14 16:01       ` Eric Blake
2020-04-14 16:16         ` Alberto Garcia
2020-03-17 18:16 ` [PATCH v4 12/30] qcow2: Update get/set_l2_entry() and add get/set_l2_bitmap() Alberto Garcia
2020-04-14  9:49   ` Vladimir Sementsov-Ogievskiy
2020-03-17 18:16 ` [PATCH v4 13/30] qcow2: Add QCow2SubclusterType and qcow2_get_subcluster_type() Alberto Garcia
2020-04-08 11:23   ` Max Reitz
2020-04-08 17:46     ` Alberto Garcia
2020-04-09  8:22       ` Max Reitz
2020-04-14 11:10   ` Vladimir Sementsov-Ogievskiy
2020-03-17 18:16 ` [PATCH v4 14/30] qcow2: Add cluster type parameter to qcow2_get_host_offset() Alberto Garcia
2020-04-08 12:15   ` Max Reitz
2020-04-14 12:30   ` Vladimir Sementsov-Ogievskiy
2020-04-14 12:38     ` Alberto Garcia
2020-03-17 18:16 ` [PATCH v4 15/30] qcow2: Replace QCOW2_CLUSTER_* with QCOW2_SUBCLUSTER_* Alberto Garcia
2020-04-08 12:42   ` Max Reitz
2020-04-15  7:10   ` Vladimir Sementsov-Ogievskiy
2020-03-17 18:16 ` [PATCH v4 16/30] qcow2: Handle QCOW2_SUBCLUSTER_UNALLOCATED_ALLOC Alberto Garcia
2020-04-15  7:28   ` Vladimir Sementsov-Ogievskiy
2020-03-17 18:16 ` [PATCH v4 17/30] qcow2: Add subcluster support to calculate_l2_meta() Alberto Garcia
2020-04-15  8:39   ` Vladimir Sementsov-Ogievskiy
2020-04-16 20:01     ` Alberto Garcia
2020-03-17 18:16 ` [PATCH v4 18/30] qcow2: Add subcluster support to qcow2_get_host_offset() Alberto Garcia
2020-04-08 12:49   ` Max Reitz
2020-04-08 17:35     ` Alberto Garcia
2020-04-22  8:07   ` Vladimir Sementsov-Ogievskiy
2020-04-22 11:54     ` Alberto Garcia
2020-04-22 12:18       ` Vladimir Sementsov-Ogievskiy
2020-03-17 18:16 ` [PATCH v4 19/30] qcow2: Add subcluster support to zero_in_l2_slice() Alberto Garcia
2020-04-22 11:06   ` Vladimir Sementsov-Ogievskiy
2020-04-22 12:53     ` Alberto Garcia
2020-03-17 18:16 ` [PATCH v4 20/30] qcow2: Add subcluster support to discard_in_l2_slice() Alberto Garcia
2020-04-09 10:05   ` Max Reitz
2020-04-10 12:47     ` Alberto Garcia
2020-04-14 10:13       ` Max Reitz
2020-04-22 11:35   ` Vladimir Sementsov-Ogievskiy
2020-04-22 17:42     ` Alberto Garcia
2020-04-22 18:09       ` Vladimir Sementsov-Ogievskiy
2020-04-23 14:18         ` Alberto Garcia
2020-03-17 18:16 ` [PATCH v4 21/30] qcow2: Add subcluster support to check_refcounts_l2() Alberto Garcia
2020-04-22 12:06   ` Vladimir Sementsov-Ogievskiy
2020-04-23 15:45     ` Alberto Garcia
2020-03-17 18:16 ` [PATCH v4 22/30] qcow2: Fix offset calculation in handle_dependencies() Alberto Garcia
2020-04-22 12:38   ` Vladimir Sementsov-Ogievskiy
2020-04-23 15:50     ` Alberto Garcia
2020-03-17 18:16 ` [PATCH v4 23/30] qcow2: Update L2 bitmap in qcow2_alloc_cluster_link_l2() Alberto Garcia
2020-04-24 19:39   ` Eric Blake
2020-04-27 13:17     ` Alberto Garcia
2020-03-17 18:16 ` [PATCH v4 24/30] qcow2: Clear the L2 bitmap when allocating a compressed cluster Alberto Garcia
2020-04-24 17:02   ` Alberto Garcia
2020-04-24 17:11     ` Eric Blake
2020-04-24 17:21       ` Alberto Garcia
2020-04-24 17:44         ` Eric Blake
2020-04-24 17:56           ` Alberto Garcia
2020-04-24 18:25             ` Vladimir Sementsov-Ogievskiy
2020-04-24 18:37               ` Alberto Garcia
2020-04-24 18:47                 ` Eric Blake
2020-04-27  7:49                   ` Max Reitz
2020-04-27 18:12                     ` Alberto Garcia
2020-04-24 18:15           ` Vladimir Sementsov-Ogievskiy
2020-04-24 18:41             ` Alberto Garcia
2020-04-25  6:38               ` Vladimir Sementsov-Ogievskiy
2020-03-17 18:16 ` [PATCH v4 25/30] qcow2: Add subcluster support to handle_alloc_space() Alberto Garcia
2020-04-27 11:54   ` Vladimir Sementsov-Ogievskiy
2020-03-17 18:16 ` [PATCH v4 26/30] qcow2: Restrict qcow2_co_pwrite_zeroes() to full clusters only Alberto Garcia
2020-04-27 11:59   ` Vladimir Sementsov-Ogievskiy
2020-03-17 18:16 ` [PATCH v4 27/30] qcow2: Assert that expand_zero_clusters_in_l1() does not support subclusters Alberto Garcia
2020-04-09 10:27   ` Max Reitz
2020-04-10 16:42     ` Alberto Garcia
2020-03-17 18:16 ` [PATCH v4 28/30] qcow2: Add the 'extended_l2' option and the QCOW2_INCOMPAT_EXTL2 bit Alberto Garcia
2020-04-09 14:49   ` Eric Blake
2020-03-17 18:16 ` [PATCH v4 29/30] qcow2: Add subcluster support to qcow2_measure() Alberto Garcia
2020-03-17 18:16 ` [PATCH v4 30/30] iotests: Add tests for qcow2 images with extended L2 entries Alberto Garcia
2020-04-09 12:22   ` Max Reitz
2020-04-13 17:16     ` Alberto Garcia
2020-04-14 10:14       ` Max Reitz
2020-04-21  5:06 ` Derek Su [this message]
2020-04-21 10:35   ` [PATCH v4 00/30] Add subcluster allocation to qcow2 Alberto Garcia

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d27d16e3-f6c7-a960-5531-d3ed71b5b92a@qnap.com \
    --to=dereksu@qnap.com \
    --cc=berto@igalia.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.