]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: domain: Add helper for getting the disk backend alias
authorPeter Krempa <pkrempa@redhat.com>
Tue, 26 Jun 2018 04:58:47 +0000 (06:58 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 20 Jul 2018 13:41:33 +0000 (15:41 +0200)
The disk backend alias was historically the alias of the -drive backing
the storage. For setups with -blockdev this will become more complex as
it will depend on other configs and generally will differ.

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

index a0ecb4c8ffdba539e35f6fab7450211ae69e0efa..9750521726f6ebf1104f2510b5d650149af3c786 100644 (file)
@@ -8599,6 +8599,34 @@ qemuDomainDetermineDiskChain(virQEMUDriverPtr driver,
 }
 
 
+/**
+ * qemuDomainDiskGetBackendAlias:
+ * @disk: disk definition
+ * @qemuCaps: emulator capabilities
+ * @backendAlias: filled with the alias of the disk storage backend
+ *
+ * Returns the correct alias for the disk backend. This may be the alias of
+ * -drive for legacy setup or the correct node name for -blockdev setups.
+ *
+ * @backendAlias may be NULL on success if the backend does not exist
+ * (disk is empty). Caller is responsible for freeing @backendAlias.
+ *
+ * Returns 0 on success, -1 on error with libvirt error reported.
+ */
+int
+qemuDomainDiskGetBackendAlias(virDomainDiskDefPtr disk,
+                              virQEMUCapsPtr qemuCaps ATTRIBUTE_UNUSED,
+                              char **backendAlias)
+{
+    *backendAlias = NULL;
+
+    if (!(*backendAlias = qemuAliasDiskDriveFromDisk(disk)))
+        return -1;
+
+    return 0;
+}
+
+
 /**
  * qemuDomainDiskChainElementRevoke:
  *
index 1692fa983824d51e6be5740875e5038f17b4b3e4..22c3a513542072c4efa0842f38039eba21956a89 100644 (file)
@@ -732,6 +732,12 @@ int qemuDomainStorageFileInit(virQEMUDriverPtr driver,
                               virStorageSourcePtr parent);
 char *qemuDomainStorageAlias(const char *device, int depth);
 
+int qemuDomainDiskGetBackendAlias(virDomainDiskDefPtr disk,
+                                  virQEMUCapsPtr qemuCaps,
+                                  char **backendAlias)
+    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
+    ATTRIBUTE_NONNULL(3) ATTRIBUTE_RETURN_CHECK;
+
 void qemuDomainDiskChainElementRevoke(virQEMUDriverPtr driver,
                                       virDomainObjPtr vm,
                                       virStorageSourcePtr elem);