From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrey Zhadchenko Date: Wed, 12 Aug 2026 23:19:55 +0300 Subject: [Devel] [PATCH VZ10 v2 00/10] dm-qcow2: improve discard and read-only merge handling Message-ID: <20260812202005.288994-1-andrey.zhadchenko@virtuozzo.com> List-Id: 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#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