The bulk domain stats API is meant to collect as much data as possible
without erroring out.
If fetching of the cache stats fails just skip outputing them.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_driver.c | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index e2db449a7a..efb6e2c454 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -16760,7 +16760,7 @@ qemuDomainGetStatsMemoryBandwidth(virQEMUDriver *driver,
}
-static int
+static void
qemuDomainGetStatsCpuCache(virQEMUDriver *driver,
virDomainObj *dom,
virTypedParamList *params)
@@ -16769,14 +16769,16 @@ qemuDomainGetStatsCpuCache(virQEMUDriver *driver,
size_t nresdata = 0;
size_t i = 0;
size_t j = 0;
- int ret = -1;
if (!virDomainObjIsActive(dom))
- return 0;
+ return;
if (qemuDomainGetResctrlMonData(driver, dom, &resdata, &nresdata,
- VIR_RESCTRL_MONITOR_TYPE_CACHE) < 0)
- goto cleanup;
+ VIR_RESCTRL_MONITOR_TYPE_CACHE) < 0) {
+ /* don't return cache stats if we can't fetch them */
+ virResetLastError();
+ return;
+ }
virTypedParamListAddUInt(params, nresdata, "cpu.cache.monitor.count");
@@ -16803,12 +16805,9 @@ qemuDomainGetStatsCpuCache(virQEMUDriver *driver,
}
}
- ret = 0;
- cleanup:
for (i = 0; i < nresdata; i++)
qemuDomainFreeResctrlMonData(resdata[i]);
VIR_FREE(resdata);
- return ret;
}
@@ -16956,8 +16955,7 @@ qemuDomainGetStatsCpu(virQEMUDriver *driver,
qemuDomainGetStatsCpuProc(dom, params);
}
- if (qemuDomainGetStatsCpuCache(driver, dom, params) < 0)
- return -1;
+ qemuDomainGetStatsCpuCache(driver, dom, params);
qemuDomainGetStatsCpuHaltPollTime(dom, params, privflags);
--
2.48.1