mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
qemu_domain: Introduce qemuDomainDiskSourceDiffers
This new private API should return true iff sources of two disks differs in sense that qemu should be instructed to change the disk backend. For instance, ejecting a CDROM is such case, or pointing disk into a different ISO location, and so on. Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
8fca346c97
commit
cb2ed632e6
@ -3001,6 +3001,39 @@ qemuDomainDetermineDiskChain(virQEMUDriverPtr driver,
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
qemuDomainDiskSourceDiffers(virConnectPtr conn,
|
||||
virDomainDiskDefPtr disk,
|
||||
virDomainDiskDefPtr origDisk)
|
||||
{
|
||||
char *diskSrc = NULL, *origDiskSrc = NULL;
|
||||
bool diskEmpty, origDiskEmpty;
|
||||
bool ret = true;
|
||||
|
||||
diskEmpty = virStorageSourceIsEmpty(disk->src);
|
||||
origDiskEmpty = virStorageSourceIsEmpty(origDisk->src);
|
||||
|
||||
if (diskEmpty && origDiskEmpty)
|
||||
return false;
|
||||
|
||||
if (diskEmpty ^ origDiskEmpty)
|
||||
return true;
|
||||
|
||||
if (qemuGetDriveSourceString(disk->src, conn, &diskSrc) < 0 ||
|
||||
qemuGetDriveSourceString(origDisk->src, conn, &origDiskSrc) < 0)
|
||||
goto cleanup;
|
||||
|
||||
/* So far in qemu disk sources are considered different
|
||||
* if either path to disk or its format changes. */
|
||||
ret = virDomainDiskGetFormat(disk) != virDomainDiskGetFormat(origDisk) ||
|
||||
STRNEQ_NULLABLE(diskSrc, origDiskSrc);
|
||||
cleanup:
|
||||
VIR_FREE(diskSrc);
|
||||
VIR_FREE(origDiskSrc);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
qemuDomainDiskBlockJobIsActive(virDomainDiskDefPtr disk)
|
||||
{
|
||||
|
@ -411,6 +411,10 @@ int qemuDomainDetermineDiskChain(virQEMUDriverPtr driver,
|
||||
bool force_probe,
|
||||
bool report_broken);
|
||||
|
||||
bool qemuDomainDiskSourceDiffers(virConnectPtr conn,
|
||||
virDomainDiskDefPtr disk,
|
||||
virDomainDiskDefPtr origDisk);
|
||||
|
||||
int qemuDomainStorageFileInit(virQEMUDriverPtr driver,
|
||||
virDomainObjPtr vm,
|
||||
virStorageSourcePtr src);
|
||||
|
Loading…
Reference in New Issue
Block a user