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 <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2023-11-23 13:43:36 +01:00
parent 94f1883c89
commit 0a1d2b43e0

View File

@ -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;