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
|
bool
|
||||||
qemuDomainDiskBlockJobIsActive(virDomainDiskDefPtr disk)
|
qemuDomainDiskBlockJobIsActive(virDomainDiskDefPtr disk)
|
||||||
{
|
{
|
||||||
|
@ -411,6 +411,10 @@ int qemuDomainDetermineDiskChain(virQEMUDriverPtr driver,
|
|||||||
bool force_probe,
|
bool force_probe,
|
||||||
bool report_broken);
|
bool report_broken);
|
||||||
|
|
||||||
|
bool qemuDomainDiskSourceDiffers(virConnectPtr conn,
|
||||||
|
virDomainDiskDefPtr disk,
|
||||||
|
virDomainDiskDefPtr origDisk);
|
||||||
|
|
||||||
int qemuDomainStorageFileInit(virQEMUDriverPtr driver,
|
int qemuDomainStorageFileInit(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr vm,
|
virDomainObjPtr vm,
|
||||||
virStorageSourcePtr src);
|
virStorageSourcePtr src);
|
||||||
|
Loading…
Reference in New Issue
Block a user