From 96beae7b0a223fb79073825430f837322ca8daeb Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Wed, 25 Jul 2018 09:36:01 +0200 Subject: [PATCH] qemu: driver: Use QOM backend name for disk IO throttling APIs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With -blockdev the drive alias can't be used any more so we need to switch to the QOM name. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- src/qemu/qemu_driver.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index f5169479cf..d9ed33c1cb 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -18200,7 +18200,8 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, virDomainDefPtr def = NULL; virDomainDefPtr persistentDef = NULL; virDomainBlockIoTuneInfo info; - char *device = NULL; + char *drivealias = NULL; + const char *qdevid = NULL; int ret = -1; size_t i; virDomainDiskDefPtr conf_disk = NULL; @@ -18425,8 +18426,12 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, if (!(disk = qemuDomainDiskByName(def, path))) goto endjob; - if (!(device = qemuAliasDiskDriveFromDisk(disk))) - goto endjob; + if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV)) { + qdevid = QEMU_DOMAIN_DISK_PRIVATE(disk)->qomName; + } else { + if (!(drivealias = qemuAliasDiskDriveFromDisk(disk))) + goto endjob; + } if (qemuDomainSetBlockIoTuneDefaults(&info, &disk->blkdeviotune, set_fields) < 0) @@ -18472,7 +18477,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, * via the JSON error code from the block_set_io_throttle call */ qemuDomainObjEnterMonitor(driver, vm); - ret = qemuMonitorSetBlockIoThrottle(priv->mon, device, NULL, + ret = qemuMonitorSetBlockIoThrottle(priv->mon, drivealias, qdevid, &info, supportMaxOptions, set_fields & QEMU_BLOCK_IOTUNE_SET_GROUP_NAME, supportMaxLengthOptions); @@ -18522,7 +18527,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, cleanup: VIR_FREE(info.group_name); - VIR_FREE(device); + VIR_FREE(drivealias); virDomainObjEndAPI(&vm); if (eventNparams) virTypedParamsFree(eventParams, eventNparams); @@ -18544,7 +18549,8 @@ qemuDomainGetBlockIoTune(virDomainPtr dom, virDomainDefPtr def = NULL; virDomainDefPtr persistentDef = NULL; virDomainBlockIoTuneInfo reply = {0}; - char *device = NULL; + char *drivealias = NULL; + const char *qdevid = NULL; int ret = -1; int maxparams; @@ -18598,10 +18604,14 @@ qemuDomainGetBlockIoTune(virDomainPtr dom, if (!(disk = qemuDomainDiskByName(def, path))) goto endjob; - if (!(device = qemuAliasDiskDriveFromDisk(disk))) - goto endjob; + if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV)) { + qdevid = QEMU_DOMAIN_DISK_PRIVATE(disk)->qomName; + } else { + if (!(drivealias = qemuAliasDiskDriveFromDisk(disk))) + goto endjob; + } qemuDomainObjEnterMonitor(driver, vm); - ret = qemuMonitorGetBlockIoThrottle(priv->mon, device, NULL, &reply); + ret = qemuMonitorGetBlockIoThrottle(priv->mon, drivealias, qdevid, &reply); if (qemuDomainObjExitMonitor(driver, vm) < 0) goto endjob; if (ret < 0) @@ -18676,7 +18686,7 @@ qemuDomainGetBlockIoTune(virDomainPtr dom, cleanup: VIR_FREE(reply.group_name); - VIR_FREE(device); + VIR_FREE(drivealias); virDomainObjEndAPI(&vm); return ret; }