[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