On 07.05.2017 02:05, Eric Blake wrote:
> I've collected several improvements for qcow2 zero-cluster handling.
>
> Available as a tag at:
> git fetch git://repo.or.cz/qemu/ericb.git nbd-blkdebug-v13
>
> Marked as v13 for "hysterical raisins", since it it the half of
> v10 [1] that was not resubmitted as v11 [2].
>
> Depends on Max's block tree:
> https://lists.gnu.org/archive/html/qemu-devel/2017-05/msg00641.html
> and on Max's qcow2 cleanups:
> https://lists.gnu.org/archive/html/qemu-devel/2017-05/msg00689.html
>
> [1] https://lists.gnu.org/archive/html/qemu-devel/2017-04/msg05227.html
> [2] https://lists.gnu.org/archive/html/qemu-devel/2017-04/msg05896.html
> [3] https://lists.gnu.org/archive/html/qemu-devel/2017-05/msg00722.html
>
> Changes since last posting (v12 [3]):
> - 2 more new patches: split indentation from other changes (patch 1),
> and add a typedef (patch 5)
> - address Max's findings
>
> 001/12:[down] 'qcow2: Nicer variable names in qcow2_update_snapshot_refcount()'
> 002/12:[0040] [FC] 'qcow2: Use consistent switch indentation'
> 003/12:[----] [--] 'block: Update comments on BDRV_BLOCK_* meanings'
> 004/12:[----] [--] 'qcow2: Correctly report status of preallocated zero clusters'
> 005/12:[down] 'qcow2: Name typedef for cluster type'
> 006/12:[0032] [FC] 'qcow2: Make distinction between zero cluster types obvious'
> 007/12:[0002] [FC] 'qcow2: Optimize zero_single_l2() to minimize L2 churn'
> 008/12:[0002] [FC] 'iotests: Improve _filter_qemu_img_map'
> 009/12:[0010] [FC] 'iotests: Add test 179 to cover write zeroes with unmap'
> 010/12:[0003] [FC] 'qcow2: Optimize write zero of unaligned tail cluster'
> 011/12:[----] [--] 'qcow2: Assert that cluster operations are aligned'
> 012/12:[----] [--] 'qcow2: Discard/zero clusters by byte count'
>
> Eric Blake (12):
> qcow2: Nicer variable names in qcow2_update_snapshot_refcount()
> qcow2: Use consistent switch indentation
> block: Update comments on BDRV_BLOCK_* meanings
> qcow2: Correctly report status of preallocated zero clusters
> qcow2: Name typedef for cluster type
> qcow2: Make distinction between zero cluster types obvious
> qcow2: Optimize zero_single_l2() to minimize L2 churn
> iotests: Improve _filter_qemu_img_map
> iotests: Add test 179 to cover write zeroes with unmap
> qcow2: Optimize write zero of unaligned tail cluster
> qcow2: Assert that cluster operations are aligned
> qcow2: Discard/zero clusters by byte count
>
> block/qcow2.h | 23 +++--
> include/block/block.h | 35 ++++----
> include/block/block_int.h | 7 ++
> block/qcow2-cluster.c | 181 ++++++++++++++++++++++-----------------
> block/qcow2-refcount.c | 144 +++++++++++++++----------------
> block/qcow2-snapshot.c | 7 +-
> block/qcow2.c | 38 ++++----
> tests/qemu-iotests/common.filter | 4 +-
> tests/qemu-iotests/060.out | 6 +-
> tests/qemu-iotests/122.out | 16 ++--
> tests/qemu-iotests/154 | 160 +++++++++++++++++++++++++++++++++-
> tests/qemu-iotests/154.out | 158 ++++++++++++++++++++++++++++++----
> tests/qemu-iotests/179 | 130 ++++++++++++++++++++++++++++
> tests/qemu-iotests/179.out | 156 +++++++++++++++++++++++++++++++++
> tests/qemu-iotests/group | 1 +
> 15 files changed, 840 insertions(+), 226 deletions(-)
> create mode 100755 tests/qemu-iotests/179
> create mode 100644 tests/qemu-iotests/179.out
Thanks, applied to my block branch with patch 5 extended as proposed
(and git fixed patch 6 automagically):
https://github.com/XanClic/qemu/commits/block
Max