From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pavel Tikhomirov Date: Tue, 25 Aug 2026 18:54:44 +0200 Subject: Re: [Devel] [PATCH VZ10 v3 00/11] dm-qcow2: improve discard and read-only merge handling In-Reply-To: <20260825122430.252094-1-andrey.zhadchenko@virtuozzo.com> References: <20260825122430.252094-1-andrey.zhadchenko@virtuozzo.com> Message-ID: List-Id: Looks good. Reviewed-by: Pavel Tikhomirov 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.