qemu: domain: Add helper for getting the disk backend alias

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>
This commit is contained in:
Peter Krempa 2018-06-26 06:58:47 +02:00
parent b05a48c0d2
commit 8abbc72bd2
2 changed files with 34 additions and 0 deletions

View 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:
*

View 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);