]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu_driver: Probe capability before calculating dirty page rate
authorHyman Huang(黄勇) <huangy81@chinatelecom.cn>
Sun, 20 Feb 2022 13:28:09 +0000 (21:28 +0800)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 21 Feb 2022 12:34:04 +0000 (13:34 +0100)
Probing QEMU_CAPS_CALC_DIRTY_RATE capability in advance
in case of failure when calculating dirty page rate.

Signed-off-by: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_driver.c

index f1f708e511dc371a7e9d93c0d7f3d6ee6a6c5453..c4127aeed8edb527919d2a94e864481bc56ba7dc 100644 (file)
@@ -20693,6 +20693,16 @@ qemuDomainStartDirtyRateCalc(virDomainPtr dom,
     if (virDomainStartDirtyRateCalcEnsureACL(dom->conn, vm->def) < 0)
         goto cleanup;
 
+    if (virDomainObjCheckActive(vm) < 0)
+        goto cleanup;
+
+    priv = vm->privateData;
+    if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_CALC_DIRTY_RATE)) {
+        virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+                       _("QEMU does not support calculating dirty page rate"));
+        goto cleanup;
+    }
+
     if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
         goto cleanup;
 
@@ -20704,7 +20714,6 @@ qemuDomainStartDirtyRateCalc(virDomainPtr dom,
 
     VIR_DEBUG("Calculate dirty rate in next %d seconds", seconds);
 
-    priv = vm->privateData;
     qemuDomainObjEnterMonitor(driver, vm);
     ret = qemuMonitorStartDirtyRateCalc(priv->mon, seconds);