From: Peter Krempa Date: Thu, 23 Nov 2023 12:43:36 +0000 (+0100) Subject: qemu: block: Don't try to merge bitmaps into 'raw' images X-Git-Tag: v9.10.0-rc1~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0a1d2b43e0db05eef8270953e9116c9ced827055;p=thirdparty%2Flibvirt.git qemu: block: Don't try to merge bitmaps into 'raw' images If any of the images in a chain above a raw image have bitmaps, libvirt would attempt to merge them when doing a block commit or block copy operation, which would result into a error in the logs as creating persistent bitmaps in a raw image is not supported. Since libvirt cares only about persistent bitmaps we can simply skip the operation if the target of a block copy or block commit is a raw image. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index fab122942a..359595367b 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -3074,6 +3074,11 @@ qemuBlockBitmapsHandleBlockcopy(virStorageSource *src, { virStorageSource *base = NULL; + /* if copy destination is a 'raw' image there's no point in attempting to + * merge the bitmaps into it */ + if (mirror->format == VIR_STORAGE_FILE_RAW) + return 0; + if (shallow) base = src->backingStore; @@ -3107,6 +3112,11 @@ qemuBlockBitmapsHandleCommitFinish(virStorageSource *topsrc, { virStorageSource *writebitmapsrc = NULL; + /* if base is a 'raw' image there's no point in attempting to merge the + * bitmaps into it */ + if (basesrc->format == VIR_STORAGE_FILE_RAW) + return 0; + if (active) writebitmapsrc = basesrc;