]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: prefer .requiredCaps for VIR_DOMAIN_STATS_IOTHREAD
authorMichal Privoznik <mprivozn@redhat.com>
Thu, 11 Nov 2021 10:20:29 +0000 (11:20 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 2 Dec 2021 15:57:41 +0000 (16:57 +0100)
Since f29d7c3e698 we have an option for checking capabilities
required for given type of statistics upfront, instead of the
callback. Switch qemuDomainGetStatsIOThread() callback to the new
style.

This will now error out properly if user requests IOTHREAD stats
forcibly (via VIR_CONNECT_GET_ALL_DOMAINS_STATS_ENFORCE_STATS
flag) but QEMU doesn't support IOThreads. Previously, this was
silently ignored.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_driver.c

index d3430557f07b855ce0b10894ba1b4222937328e1..f12a5aef11462fe9986ccd55b96f7451265d15b8 100644 (file)
@@ -18513,7 +18513,6 @@ qemuDomainGetStatsIOThread(virQEMUDriver *driver,
                            virTypedParamList *params,
                            unsigned int privflags)
 {
-    qemuDomainObjPrivate *priv = dom->privateData;
     size_t i;
     qemuMonitorIOThreadInfo **iothreads = NULL;
     int niothreads = 0;
@@ -18522,9 +18521,6 @@ qemuDomainGetStatsIOThread(virQEMUDriver *driver,
     if (!HAVE_JOB(privflags) || !virDomainObjIsActive(dom))
         return 0;
 
-    if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_IOTHREAD))
-        return 0;
-
     if (qemuDomainGetIOThreadsMon(driver, dom, &iothreads, &niothreads) < 0)
         return -1;
 
@@ -18665,6 +18661,12 @@ struct qemuDomainGetStatsWorker {
     virQEMUCapsFlags *requiredCaps;
 };
 
+
+static virQEMUCapsFlags queryIOThreadRequired[] = {
+    QEMU_CAPS_OBJECT_IOTHREAD,
+    QEMU_CAPS_LAST
+};
+
 static virQEMUCapsFlags queryDirtyRateRequired[] = {
     QEMU_CAPS_QUERY_DIRTY_RATE,
     QEMU_CAPS_LAST
@@ -18678,7 +18680,7 @@ static struct qemuDomainGetStatsWorker qemuDomainGetStatsWorkers[] = {
     { qemuDomainGetStatsInterface, VIR_DOMAIN_STATS_INTERFACE, false, NULL },
     { qemuDomainGetStatsBlock, VIR_DOMAIN_STATS_BLOCK, true, NULL },
     { qemuDomainGetStatsPerf, VIR_DOMAIN_STATS_PERF, false, NULL },
-    { qemuDomainGetStatsIOThread, VIR_DOMAIN_STATS_IOTHREAD, true, NULL },
+    { qemuDomainGetStatsIOThread, VIR_DOMAIN_STATS_IOTHREAD, true, queryIOThreadRequired },
     { qemuDomainGetStatsMemory, VIR_DOMAIN_STATS_MEMORY, false, NULL },
     { qemuDomainGetStatsDirtyRate, VIR_DOMAIN_STATS_DIRTYRATE, true, queryDirtyRateRequired },
     { NULL, 0, false, NULL }