[libvirt] [PATCH 2/2] qemu: Don't fail stats collection due to IOThread capability
Ján Tomko
jtomko at redhat.com
Thu Dec 6 13:59:06 UTC 2018
On Tue, Nov 27, 2018 at 11:23:23AM -0500, John Ferlan wrote:
>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 <jferlan at redhat.com>
>---
> src/qemu/qemu_driver.c | 22 ++++++++++++++--------
> 1 file changed, 14 insertions(+), 8 deletions(-)
>
>diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
>index 2fb8eef609..60e29577ad 100644
>--- a/src/qemu/qemu_driver.c
>+++ b/src/qemu/qemu_driver.c
>@@ -5490,16 +5490,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)
>@@ -5514,6 +5507,7 @@ qemuDomainGetIOThreadsLive(virQEMUDriverPtr driver,
> virDomainObjPtr vm,
> virDomainIOThreadInfoPtr **info)
> {
>+ qemuDomainObjPrivatePtr priv;
> qemuMonitorIOThreadInfoPtr *iothreads = NULL;
> virDomainIOThreadInfoPtr *info_ret = NULL;
> int niothreads = 0;
>@@ -5529,6 +5523,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;
>
>@@ -20874,6 +20875,7 @@ qemuDomainGetStatsIOThread(virQEMUDriverPtr driver,
> int *maxparams,
> unsigned int privflags ATTRIBUTE_UNUSED)
> {
>+ qemuDomainObjPrivatePtr priv;
dom is locked when this function is called, you can initialize priv here
> size_t i;
> qemuMonitorIOThreadInfoPtr *iothreads = NULL;
> int niothreads;
>@@ -20882,6 +20884,10 @@ qemuDomainGetStatsIOThread(virQEMUDriverPtr driver,
> if (!virDomainObjIsActive(dom))
> return 0;
>
>+ priv = dom->privateData;
>+ if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_IOTHREAD))
>+ return 0;
>+
> if ((niothreads = qemuDomainGetIOThreadsMon(driver, dom, &iothreads)) < 0)
> return -1;
Reviewed-by: Ján Tomko <jtomko at redhat.com>
Jano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20181206/fc103801/attachment-0001.sig>
More information about the libvir-list
mailing list