As this conversion removes the last use of qemuHotplugDiskSource* functions we can remove all of them now. Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> --- src/qemu/qemu_hotplug.c | 188 ++-------------------------------------- 1 file changed, 7 insertions(+), 181 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 1b1d2ba5ce..a1296d55d4 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -417,177 +417,6 @@ qemuHotplugRemoveManagedPR(virQEMUDriverPtr driver, } -struct _qemuHotplugDiskSourceData { - qemuBlockStorageSourceAttachDataPtr *backends; - size_t nbackends; -}; -typedef struct _qemuHotplugDiskSourceData qemuHotplugDiskSourceData; -typedef qemuHotplugDiskSourceData *qemuHotplugDiskSourceDataPtr; - - -static void -qemuHotplugDiskSourceDataFree(qemuHotplugDiskSourceDataPtr data) -{ - size_t i; - - if (!data) - return; - - for (i = 0; i < data->nbackends; i++) - qemuBlockStorageSourceAttachDataFree(data->backends[i]); - - VIR_FREE(data->backends); - VIR_FREE(data); -} - - -static qemuHotplugDiskSourceDataPtr -qemuHotplugDiskSourceRemovePrepare(virDomainDiskDefPtr disk, - virStorageSourcePtr src, - virQEMUCapsPtr qemuCaps) -{ - VIR_AUTOPTR(qemuBlockStorageSourceAttachData) backend = NULL; - qemuHotplugDiskSourceDataPtr data = NULL; - qemuHotplugDiskSourceDataPtr ret = NULL; - char *drivealias = NULL; - virStorageSourcePtr n; - - if (VIR_ALLOC(data) < 0) - return NULL; - - if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV)) { - for (n = src; virStorageSourceIsBacking(n); n = n->backingStore) { - if (!(backend = qemuBlockStorageSourceDetachPrepare(n, NULL))) - goto cleanup; - - if (VIR_APPEND_ELEMENT(data->backends, data->nbackends, backend) < 0) - goto cleanup; - } - } else { - if (!(drivealias = qemuAliasDiskDriveFromDisk(disk))) - goto cleanup; - - if (!(backend = qemuBlockStorageSourceDetachPrepare(src, drivealias))) - goto cleanup; - - if (VIR_APPEND_ELEMENT(data->backends, data->nbackends, backend) < 0) - goto cleanup; - } - - VIR_STEAL_PTR(ret, data); - - cleanup: - qemuHotplugDiskSourceDataFree(data); - return ret; -} - - -/** - * qemuHotplugDiskSourceAttachPrepare: - * @disk: disk to generate attachment data for - * @src: disk source to prepare attachment - * @qemuCaps: capabilities of the qemu process - * - * Prepares and returns qemuHotplugDiskSourceData structure filled with all data - * which will fully attach the source backend of the disk to a given VM. - */ -static qemuHotplugDiskSourceDataPtr -qemuHotplugDiskSourceAttachPrepare(virDomainDiskDefPtr disk, - virStorageSourcePtr src, - virQEMUCapsPtr qemuCaps) -{ - VIR_AUTOPTR(qemuBlockStorageSourceAttachData) backend = NULL; - qemuHotplugDiskSourceDataPtr data; - qemuHotplugDiskSourceDataPtr ret = NULL; - virStorageSourcePtr savesrc = NULL; - virStorageSourcePtr n; - - if (VIR_ALLOC(data) < 0) - return NULL; - - if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV)) { - for (n = src; virStorageSourceIsBacking(n); n = n->backingStore) { - if (!(backend = qemuBlockStorageSourceAttachPrepareBlockdev(n))) - goto cleanup; - - if (qemuBuildStorageSourceAttachPrepareCommon(n, backend, qemuCaps) < 0) - goto cleanup; - - if (VIR_APPEND_ELEMENT(data->backends, data->nbackends, backend) < 0) - goto cleanup; - } - } else { - VIR_STEAL_PTR(savesrc, disk->src); - disk->src = src; - - if (!(backend = qemuBuildStorageSourceAttachPrepareDrive(disk, qemuCaps))) - goto cleanup; - - VIR_STEAL_PTR(disk->src, savesrc); - - if (qemuBuildStorageSourceAttachPrepareCommon(src, backend, qemuCaps) < 0) - goto cleanup; - - if (VIR_APPEND_ELEMENT(data->backends, data->nbackends, backend) < 0) - goto cleanup; - } - - VIR_STEAL_PTR(ret, data); - - cleanup: - if (savesrc) - VIR_STEAL_PTR(disk->src, savesrc); - - qemuHotplugDiskSourceDataFree(data); - return ret; -} - - -/** - * qemuHotplugDiskSourceAttach: - * @mon: monitor object - * @data: disk backend data object describing what to remove - * - * Attach a disk source backend with all relevant pieces. Caller must enter the - * monitor context for @mon. - */ -static int -qemuHotplugDiskSourceAttach(qemuMonitorPtr mon, - qemuHotplugDiskSourceDataPtr data) -{ - size_t i; - - for (i = data->nbackends; i > 0; i--) { - if (qemuBlockStorageSourceAttachApply(mon, data->backends[i - 1]) < 0) - return -1; - } - - - return 0; -} - - -/** - * qemuHotplugDiskSourceRemove: - * @mon: monitor object - * @data: disk backend data object describing what to remove - * - * Remove a disk source backend with all relevant pieces. This function - * preserves the error which was set prior to calling it. Caller must enter the - * monitor context for @mon. - */ -static void -qemuHotplugDiskSourceRemove(qemuMonitorPtr mon, - qemuHotplugDiskSourceDataPtr data) - -{ - size_t i; - - for (i = 0; i < data->nbackends; i++) - qemuBlockStorageSourceAttachRollback(mon, data->backends[i]); -} - - /** * qemuDomainChangeMediaBlockdev: * @driver: qemu driver structure @@ -614,20 +443,19 @@ qemuDomainChangeMediaBlockdev(virQEMUDriverPtr driver, { qemuDomainObjPrivatePtr priv = vm->privateData; qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk); - qemuHotplugDiskSourceDataPtr newbackend = NULL; - qemuHotplugDiskSourceDataPtr oldbackend = NULL; + VIR_AUTOPTR(qemuBlockStorageSourceChainData) newbackend = NULL; + VIR_AUTOPTR(qemuBlockStorageSourceChainData) oldbackend = NULL; char *nodename = NULL; int rc; int ret = -1; if (!virStorageSourceIsEmpty(oldsrc) && - !(oldbackend = qemuHotplugDiskSourceRemovePrepare(disk, oldsrc, - priv->qemuCaps))) + !(oldbackend = qemuBlockStorageSourceChainDetachPrepareBlockdev(oldsrc))) goto cleanup; if (!virStorageSourceIsEmpty(newsrc)) { - if (!(newbackend = qemuHotplugDiskSourceAttachPrepare(disk, newsrc, - priv->qemuCaps))) + if (!(newbackend = qemuBuildStorageSourceChainAttachPrepareBlockdev(newsrc, + priv->qemuCaps))) goto cleanup; if (qemuDomainDiskGetBackendAlias(disk, priv->qemuCaps, &nodename) < 0) @@ -649,11 +477,11 @@ qemuDomainChangeMediaBlockdev(virQEMUDriverPtr driver, rc = qemuMonitorBlockdevMediumRemove(priv->mon, diskPriv->qomName); if (rc == 0 && oldbackend) - qemuHotplugDiskSourceRemove(priv->mon, oldbackend); + qemuBlockStorageSourceChainDetach(priv->mon, oldbackend); if (newbackend && nodename) { if (rc == 0) - rc = qemuHotplugDiskSourceAttach(priv->mon, newbackend); + rc = qemuBlockStorageSourceChainAttach(priv->mon, newbackend); if (rc == 0) rc = qemuMonitorBlockdevMediumInsert(priv->mon, diskPriv->qomName, @@ -669,8 +497,6 @@ qemuDomainChangeMediaBlockdev(virQEMUDriverPtr driver, ret = 0; cleanup: - qemuHotplugDiskSourceDataFree(newbackend); - qemuHotplugDiskSourceDataFree(oldbackend); VIR_FREE(nodename); return ret; } -- 2.21.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list