mirror of https://gitee.com/openkylin/libvirt.git
qemu: hotplug: Prepare disk source in qemuDomainAttachDeviceDiskLive
Move the preparation steps from qemuDomainAttachDiskGeneric up into qemuDomainAttachDeviceDiskLive so that also media changing can use the prepared file. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
663b1d55de
commit
192fdaa614
|
@ -641,7 +641,6 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
|
||||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||||
qemuHotplugDiskSourceDataPtr diskdata = NULL;
|
qemuHotplugDiskSourceDataPtr diskdata = NULL;
|
||||||
char *devstr = NULL;
|
char *devstr = NULL;
|
||||||
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
|
||||||
|
|
||||||
if (qemuHotplugPrepareDiskAccess(driver, vm, disk, NULL, false) < 0)
|
if (qemuHotplugPrepareDiskAccess(driver, vm, disk, NULL, false) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -649,9 +648,6 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
|
||||||
if (qemuAssignDeviceDiskAlias(vm->def, disk) < 0)
|
if (qemuAssignDeviceDiskAlias(vm->def, disk) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (qemuDomainPrepareDiskSource(disk, priv, cfg) < 0)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
if (!(diskdata = qemuHotplugDiskSourceAttachPrepare(disk, priv->qemuCaps)))
|
if (!(diskdata = qemuHotplugDiskSourceAttachPrepare(disk, priv->qemuCaps)))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
@ -686,7 +682,6 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
|
||||||
qemuHotplugDiskSourceDataFree(diskdata);
|
qemuHotplugDiskSourceDataFree(diskdata);
|
||||||
qemuDomainSecretDiskDestroy(disk);
|
qemuDomainSecretDiskDestroy(disk);
|
||||||
VIR_FREE(devstr);
|
VIR_FREE(devstr);
|
||||||
virObjectUnref(cfg);
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
exit_monitor:
|
exit_monitor:
|
||||||
|
@ -927,6 +922,8 @@ qemuDomainAttachDeviceDiskLive(virQEMUDriverPtr driver,
|
||||||
bool forceMediaChange)
|
bool forceMediaChange)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
|
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
||||||
|
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||||
virDomainDiskDefPtr disk = dev->data.disk;
|
virDomainDiskDefPtr disk = dev->data.disk;
|
||||||
virDomainDiskDefPtr orig_disk = NULL;
|
virDomainDiskDefPtr orig_disk = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
@ -943,6 +940,9 @@ qemuDomainAttachDeviceDiskLive(virQEMUDriverPtr driver,
|
||||||
if (qemuDomainDetermineDiskChain(driver, vm, disk, true) < 0)
|
if (qemuDomainDetermineDiskChain(driver, vm, disk, true) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
|
if (qemuDomainPrepareDiskSource(disk, priv, cfg) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
switch ((virDomainDiskDevice) disk->device) {
|
switch ((virDomainDiskDevice) disk->device) {
|
||||||
case VIR_DOMAIN_DISK_DEVICE_CDROM:
|
case VIR_DOMAIN_DISK_DEVICE_CDROM:
|
||||||
case VIR_DOMAIN_DISK_DEVICE_FLOPPY:
|
case VIR_DOMAIN_DISK_DEVICE_FLOPPY:
|
||||||
|
@ -1013,6 +1013,7 @@ qemuDomainAttachDeviceDiskLive(virQEMUDriverPtr driver,
|
||||||
cleanup:
|
cleanup:
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ignore_value(qemuRemoveSharedDevice(driver, dev, vm->def->name));
|
ignore_value(qemuRemoveSharedDevice(driver, dev, vm->def->name));
|
||||||
|
virObjectUnref(cfg);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue