]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuDomainPrepareStorageSourceBlockdev: Set default encryption engine also when prepa...
authorPeter Krempa <pkrempa@redhat.com>
Tue, 16 Nov 2021 13:45:53 +0000 (14:45 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 19 Nov 2021 11:41:36 +0000 (12:41 +0100)
Originally the default encryption engine is populated in the disk
post-parse callback code. This works for disks but for any additional
images introduced either via the block copy API or via the backup API we
don't populate the default.

In case when the backup or block copy is requested on an encrypted image
this would then lead to an error:

 error: internal error: Unexpected enum value 0 for virStorageEncryptionEngine

This patch adds another point where we populate the default which is
when setting up a virStorageSource for actual usage.

We keep the original setting in the post-parse callback as that's the
only point that is recorded in the XML file after definition.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2023674
Fixes: ab1d46d6128
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_domain.c

index e69215cee2d02dddfd8a63b27146616b512f0461..1f45b30975d6716b8fbb600fbe5976a0b9b31a7d 100644 (file)
@@ -10651,6 +10651,9 @@ qemuDomainPrepareStorageSourceBlockdev(virDomainDiskDef *disk,
     if (qemuBlockStorageSourceNeedsStorageSliceLayer(src))
         src->sliceStorage->nodename = g_strdup_printf("libvirt-%u-slice-sto", src->id);
 
+    if (src->encryption && src->encryption->engine == VIR_STORAGE_ENCRYPTION_ENGINE_DEFAULT)
+        src->encryption->engine = VIR_STORAGE_ENCRYPTION_ENGINE_QEMU;
+
     if (qemuDomainValidateStorageSource(src, priv->qemuCaps, false) < 0)
         return -1;