[Devel] [PATCH VZ10 v2 00/10] dm-qcow2: improve discard and read-only merge handling

Vasileios Almpanis vasileios.almpanis at virtuozzo.com
Wed Aug 19 14:05:02 MSK 2026


> 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.
Generally with my limited knowledge is looks good.
> 
> v2:
>  - patch#6: 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
> if forgot about it here)
> 
> Andrey Zhadchenko (10):
>   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    | 390 ++++++++++++++++++++++++++++-------
>  drivers/md/dm-qcow2-target.c |   2 +-
>  drivers/md/dm-qcow2.h        |  19 +-
>  4 files changed, 337 insertions(+), 95 deletions(-)
> 
> --
> 2.43.5

Reviewed-by: Vasileios Almpanis <vasileios.almpanis at virtuozzo.com>

-- 
Vasileios Almpanis <vasileios.almpanis at virtuozzo.com>


More information about the Devel mailing list