[Devel] [PATCH VZ10 v3 00/11] dm-qcow2: improve discard and read-only merge handling
Pavel Tikhomirov
ptikhomirov at virtuozzo.com
Tue Aug 25 19:54:44 MSK 2026
Looks good.
Reviewed-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
On 8/25/26 14:24, Andrey Zhadchenko wrote:
> This series makes discard update qcow2 metadata and permits backward
> merge from read-only source images.
>
> First patch improves revert_cluster_alloc: this function didn't expect
> L2 entries to contain subcluster descriptions (when ext2_l2 is set).
>
> The second patch renames COW machinery to a more general 'replace entry'.
>
> Next five patches improve discard support in general: now it clears
> metadata and have a subcluster granularity.
>
> The next two patches support backward merge when the image we merge
> from is read-only. Such merges now leave the source mappings and
> metadata unchanged. Previously the module ignored file mode and
> submitted writes anyway.
>
> Last patch makes merge respect all metadata-zeroed blocks. For now it is
> writing zeroes as data, but we will improve this to metadata when we
> support REQ_OP_WRITE_ZEROES.
>
>
> v2:
> - patch "update metadata on subclusters discard": expand
> qio_discard_updates_metadata() condition to return true when backing
> file is present and fully covered sublcu zero bit isn't already set.
> prepare_cluster_discard() already handled this case but I forgot
> about it here.
>
> v3:
> - add new "drivers/md/dm-qcow2: do not attach a bvec to discard qios"
> patch which ensures discard qios do not have garbage bvecs. Otherwise
> COW operations before discard may use these them. Following patches
> move discard above COW and alleviate this problem, but let's be
> explicit.
> - various commit message and code formatting fixes, but nothing
> serious
>
> Andrey Zhadchenko (11):
> drivers/md/dm-qcow2: do not attach a bvec to discard qios
> drivers/md/dm-qcow2: fix revert_cluster_alloc() for ext_l2 case
> drivers/md/dm-qcow2: generalize COW index update machinery
> drivers/md/dm-qcow2: update metadata on whole cluster discard
> drivers/md/dm-qcow2: never trigger COW or allocation on discard
> drivers/md/dm-qcow2: set L2_READS_ALL_ZEROES after some discards
> drivers/md/dm-qcow2: update metadata on subclusters discard
> drivers/md/dm-qcow2: unmap cluster when discard clears last allocated
> subclusters
> drivers/md/dm-qcow2: do discards during backward merge only for
> writable image
> drivers/md/dm-qcow2: allow shared L1 entries during merge from RO
> image
> drivers/md/dm-qcow2: respect zeroes during merge
>
> drivers/md/dm-qcow2-cmd.c | 21 +-
> drivers/md/dm-qcow2-map.c | 415 +++++++++++++++++++++++++++--------
> drivers/md/dm-qcow2-target.c | 2 +-
> drivers/md/dm-qcow2.h | 19 +-
> 4 files changed, 351 insertions(+), 106 deletions(-)
>
--
Best regards, Pavel Tikhomirov
Senior Software Developer, Virtuozzo.
More information about the Devel
mailing list