]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuDomainPrepareStorageSourceBlockdevNodename: Restructure code to allow missing...
authorPeter Krempa <pkrempa@redhat.com>
Fri, 3 Nov 2023 13:30:35 +0000 (14:30 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 27 Nov 2023 09:14:20 +0000 (10:14 +0100)
Similarly to other bits of code, we don't need to setup the format layer
if it will not be formatted. Add logic which uses
qemuBlockStorageSourceNeedsFormatLayer to see whether the setup of the
format node is needed.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_domain.c

index 413f67577e745e0df4cc90a1086ce205ac526088..953808fcfe798be190d37fd510591dd472efd156 100644 (file)
@@ -11108,11 +11108,21 @@ qemuDomainPrepareStorageSourceBlockdevNodename(virDomainDiskDef *disk,
                                                virQEMUDriverConfig *cfg)
 {
     char *nodestorage = g_strdup_printf("%s-storage", nodenameprefix);
-    char *nodeformat = g_strdup_printf("%s-format", nodenameprefix);
+    const char *encryptionAlias = nodestorage;
 
     /* qemuBlockStorageSourceSetStorageNodename steals 'nodestorage' */
     qemuBlockStorageSourceSetStorageNodename(src, nodestorage);
-    qemuBlockStorageSourceSetFormatNodename(src, nodeformat);
+
+    if (qemuBlockStorageSourceNeedsFormatLayer(src)) {
+        char *nodeformat = g_strdup_printf("%s-format", nodenameprefix);
+
+        qemuBlockStorageSourceSetFormatNodename(src, nodeformat);
+
+        encryptionAlias = nodeformat;
+    }
+
+    if (qemuDomainSecretStorageSourcePrepareEncryption(priv, src, encryptionAlias) < 0)
+        return -1;
 
     if (qemuBlockStorageSourceNeedsStorageSliceLayer(src))
         src->sliceStorage->nodename = g_strdup_printf("libvirt-%u-slice-sto", src->id);
@@ -11126,9 +11136,6 @@ qemuDomainPrepareStorageSourceBlockdevNodename(virDomainDiskDef *disk,
     qemuDomainPrepareStorageSourceConfig(src, cfg);
     qemuDomainPrepareDiskSourceData(disk, src);
 
-    if (qemuDomainSecretStorageSourcePrepareEncryption(priv, src, nodeformat) < 0)
-        return -1;
-
     if (!qemuDomainPrepareStorageSourceNbdkit(src, cfg, nodestorage, priv)) {
         /* If we're using nbdkit to serve the storage source, we don't pass
          * authentication secrets to qemu, but will pass them to nbdkit instead */