The bulk domain stats API is meant to collect as much data as possible
without erroring out.
If fetching of the dirty rate stats fails just skip outputing them.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_driver.c | 25 ++++++++++---------------
1 file changed, 10 insertions(+), 15 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 45f286994e..9e125d8b24 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -17601,19 +17601,6 @@ qemuDomainGetStatsPerf(virQEMUDriver *driver G_GNUC_UNUSED,
return 0;
}
-static int
-qemuDomainGetStatsDirtyRateMon(virDomainObj *vm,
- qemuMonitorDirtyRateInfo *info)
-{
- qemuDomainObjPrivate *priv = vm->privateData;
- int ret;
-
- qemuDomainObjEnterMonitor(vm);
- ret = qemuMonitorQueryDirtyRate(priv->mon, info);
- qemuDomainObjExitMonitor(vm);
-
- return ret;
-}
static int
qemuDomainGetStatsDirtyRate(virQEMUDriver *driver G_GNUC_UNUSED,
@@ -17621,13 +17608,21 @@ qemuDomainGetStatsDirtyRate(virQEMUDriver *driver
G_GNUC_UNUSED,
virTypedParamList *params,
unsigned int privflags)
{
+ qemuDomainObjPrivate *priv = dom->privateData;
qemuMonitorDirtyRateInfo info;
+ int rv;
if (!HAVE_JOB(privflags) || !virDomainObjIsActive(dom))
return 0;
- if (qemuDomainGetStatsDirtyRateMon(dom, &info) < 0)
- return -1;
+ qemuDomainObjEnterMonitor(dom);
+ rv = qemuMonitorQueryDirtyRate(priv->mon, &info);
+ qemuDomainObjExitMonitor(dom);
+
+ if (rv < 0) {
+ virResetLastError();
+ return 0;
+ }
virTypedParamListAddInt(params, info.status, "dirtyrate.calc_status");
virTypedParamListAddLLong(params, info.startTime,
"dirtyrate.calc_start_time");
--
2.48.1