mirror of https://gitee.com/openkylin/libvirt.git
qemu: hotplug: Use storage chain helpers in qemuDomainAttachDiskGeneric
Replace the use of qemuHotplugDiskSourceAttach* helpers with qemuBuildStorageSourceChainAttachPrepare(Blockdev|Drive). Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
c64010d3e8
commit
407fd434bc
|
@ -786,9 +786,9 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr vm,
|
virDomainObjPtr vm,
|
||||||
virDomainDiskDefPtr disk)
|
virDomainDiskDefPtr disk)
|
||||||
{
|
{
|
||||||
|
VIR_AUTOPTR(qemuBlockStorageSourceChainData) data = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||||
qemuHotplugDiskSourceDataPtr diskdata = NULL;
|
|
||||||
char *devstr = NULL;
|
char *devstr = NULL;
|
||||||
VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver);
|
VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver);
|
||||||
VIR_AUTOPTR(virJSONValue) corProps = NULL;
|
VIR_AUTOPTR(virJSONValue) corProps = NULL;
|
||||||
|
@ -807,11 +807,15 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
|
||||||
if (disk->copy_on_read == VIR_TRISTATE_SWITCH_ON &&
|
if (disk->copy_on_read == VIR_TRISTATE_SWITCH_ON &&
|
||||||
!(corProps = qemuBlockStorageGetCopyOnReadProps(disk)))
|
!(corProps = qemuBlockStorageGetCopyOnReadProps(disk)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
|
||||||
|
|
||||||
if (!(diskdata = qemuHotplugDiskSourceAttachPrepare(disk, disk->src,
|
if (!(data = qemuBuildStorageSourceChainAttachPrepareBlockdev(disk->src,
|
||||||
priv->qemuCaps)))
|
priv->qemuCaps)))
|
||||||
goto error;
|
goto cleanup;
|
||||||
|
} else {
|
||||||
|
if (!(data = qemuBuildStorageSourceChainAttachPrepareDrive(disk,
|
||||||
|
priv->qemuCaps)))
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(devstr = qemuBuildDiskDeviceStr(vm->def, disk, 0, priv->qemuCaps)))
|
if (!(devstr = qemuBuildDiskDeviceStr(vm->def, disk, 0, priv->qemuCaps)))
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -824,7 +828,7 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
|
||||||
|
|
||||||
qemuDomainObjEnterMonitor(driver, vm);
|
qemuDomainObjEnterMonitor(driver, vm);
|
||||||
|
|
||||||
if (qemuHotplugDiskSourceAttach(priv->mon, diskdata) < 0)
|
if (qemuBlockStorageSourceChainAttach(priv->mon, data) < 0)
|
||||||
goto exit_monitor;
|
goto exit_monitor;
|
||||||
|
|
||||||
if (corProps &&
|
if (corProps &&
|
||||||
|
@ -850,7 +854,6 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
qemuHotplugDiskSourceDataFree(diskdata);
|
|
||||||
qemuDomainSecretDiskDestroy(disk);
|
qemuDomainSecretDiskDestroy(disk);
|
||||||
VIR_FREE(devstr);
|
VIR_FREE(devstr);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -858,7 +861,7 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
|
||||||
exit_monitor:
|
exit_monitor:
|
||||||
if (corAlias)
|
if (corAlias)
|
||||||
ignore_value(qemuMonitorDelObject(priv->mon, corAlias));
|
ignore_value(qemuMonitorDelObject(priv->mon, corAlias));
|
||||||
qemuHotplugDiskSourceRemove(priv->mon, diskdata);
|
qemuBlockStorageSourceChainDetach(priv->mon, data);
|
||||||
|
|
||||||
if (qemuDomainObjExitMonitor(driver, vm) < 0)
|
if (qemuDomainObjExitMonitor(driver, vm) < 0)
|
||||||
ret = -2;
|
ret = -2;
|
||||||
|
|
Loading…
Reference in New Issue