From 61d1253364d1fb21acf0e849f5aebf48ddc59bd4 Mon Sep 17 00:00:00 2001 From: John Ferlan Date: Tue, 27 Nov 2018 10:12:56 -0500 Subject: [PATCH] qemu: Don't fail stats collection due to IOThread capability MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Commit 212dc9286 made a generic qemuDomainGetIOThreadsMon which would fail if the QEMU_CAPS_OBJECT_IOTHREAD didn't exist. Then commit d1eac927 used that helper for the collection of all domain stats. However, if the capability doesn't exist, then the entire stats collection fails. Since the IOThread stats were meant to be if available only, thus rather than failing if the capability doesn't exist, let's just not collect the stats. Restore the caps failure logic for qemuDomainGetIOThreadsLive. Signed-off-by: John Ferlan Reviewed-by: Ján Tomko --- src/qemu/qemu_driver.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 6fe5a43aeb..acba485309 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -5498,16 +5498,9 @@ qemuDomainGetIOThreadsMon(virQEMUDriverPtr driver, virDomainObjPtr vm, qemuMonitorIOThreadInfoPtr **iothreads) { - qemuDomainObjPrivatePtr priv; + qemuDomainObjPrivatePtr priv = vm->privateData; int niothreads = 0; - priv = vm->privateData; - if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_IOTHREAD)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("IOThreads not supported with this binary")); - return -1; - } - qemuDomainObjEnterMonitor(driver, vm); niothreads = qemuMonitorGetIOThreads(priv->mon, iothreads); if (qemuDomainObjExitMonitor(driver, vm) < 0 || niothreads < 0) @@ -5522,6 +5515,7 @@ qemuDomainGetIOThreadsLive(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainIOThreadInfoPtr **info) { + qemuDomainObjPrivatePtr priv; qemuMonitorIOThreadInfoPtr *iothreads = NULL; virDomainIOThreadInfoPtr *info_ret = NULL; int niothreads = 0; @@ -5537,6 +5531,13 @@ qemuDomainGetIOThreadsLive(virQEMUDriverPtr driver, goto endjob; } + priv = vm->privateData; + if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_IOTHREAD)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("IOThreads not supported with this binary")); + goto endjob; + } + if ((niothreads = qemuDomainGetIOThreadsMon(driver, vm, &iothreads)) < 0) goto endjob; @@ -20882,6 +20883,7 @@ qemuDomainGetStatsIOThread(virQEMUDriverPtr driver, int *maxparams, unsigned int privflags ATTRIBUTE_UNUSED) { + qemuDomainObjPrivatePtr priv = dom->privateData; size_t i; qemuMonitorIOThreadInfoPtr *iothreads = NULL; int niothreads; @@ -20890,6 +20892,9 @@ qemuDomainGetStatsIOThread(virQEMUDriverPtr driver, if (!virDomainObjIsActive(dom)) return 0; + if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_IOTHREAD)) + return 0; + if ((niothreads = qemuDomainGetIOThreadsMon(driver, dom, &iothreads)) < 0) return -1; -- 2.47.2