]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Use configured iothread poll parameters on startup
authorPeter Krempa <pkrempa@redhat.com>
Thu, 23 Feb 2023 13:27:17 +0000 (14:27 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 2 May 2023 12:32:47 +0000 (14:32 +0200)
Implement the support for the persisted poll parameters and remove
restrictions on saving config when modifying them during runtime.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_command.c
src/qemu/qemu_driver.c
tests/qemuxml2argvdata/iothreads-ids-pool-sizes.x86_64-latest.args

index 58a0484b33632258ec3259d4fb1506f3b6c47b40..dcad449413a58d29772f9664cd76358493d123f0 100644 (file)
@@ -7305,6 +7305,24 @@ qemuBuildIOThreadCommandLine(virCommand *cmd,
                                          NULL) < 0)
             return -1;
 
+        if (iothread->set_poll_max_ns &&
+            virJSONValueObjectAdd(&props,
+                                  "U:poll-max-ns", iothread->poll_max_ns,
+                                  NULL) < 0)
+            return -1;
+
+        if (iothread->set_poll_grow &&
+            virJSONValueObjectAdd(&props,
+                                  "U:poll-grow", iothread->poll_grow,
+                                  NULL) < 0)
+            return -1;
+
+        if (iothread->set_poll_shrink &&
+            virJSONValueObjectAdd(&props,
+                                  "U:poll-shrink", iothread->poll_shrink,
+                                  NULL) < 0)
+            return -1;
+
         if (qemuBuildObjectCommandlineFromJSON(cmd, props, qemuCaps) < 0)
             return -1;
     }
index b6a34c02ab6c88d80361d00f87bf8d994889ad3d..00b58e042424347ded92a8fe496e078a8bcb0910 100644 (file)
@@ -5067,23 +5067,30 @@ qemuDomainHotplugModIOThread(virDomainObj *vm,
 }
 
 
-static int
+static void
 qemuDomainHotplugModIOThreadIDDef(virDomainIOThreadIDDef *def,
                                   qemuMonitorIOThreadInfo mondef)
 {
-    /* These have no representation in domain XML */
-    if (mondef.set_poll_grow ||
-        mondef.set_poll_max_ns ||
-        mondef.set_poll_shrink)
-        return -1;
+    if (mondef.set_poll_max_ns) {
+        def->poll_max_ns = mondef.poll_max_ns;
+        def->set_poll_max_ns = true;
+    }
+
+    if (mondef.set_poll_grow) {
+        def->poll_grow = mondef.poll_grow;
+        def->set_poll_grow = true;
+    }
+
+    if (mondef.set_poll_shrink) {
+        def->poll_shrink = mondef.poll_shrink;
+        def->set_poll_shrink = true;
+    }
 
     if (mondef.set_thread_pool_min)
         def->thread_pool_min = mondef.thread_pool_min;
 
     if (mondef.set_thread_pool_max)
         def->thread_pool_max = mondef.thread_pool_max;
-
-    return 0;
 }
 
 
@@ -5380,12 +5387,7 @@ qemuDomainChgIOThread(virQEMUDriver *driver,
             if (qemuDomainIOThreadValidate(iothreaddef, iothread, false) < 0)
                 goto endjob;
 
-            if (qemuDomainHotplugModIOThreadIDDef(iothreaddef, iothread) < 0) {
-                virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
-                               _("configuring persistent polling values is not supported"));
-                goto endjob;
-            }
-
+            qemuDomainHotplugModIOThreadIDDef(iothreaddef, iothread);
             break;
         }
     }
index 4f5a11aab1f184dd9b251bf72a0ff30df40965b0..1422e94e35dc5b4f2fe698e2645a2d06d5d257ec 100644 (file)
@@ -18,9 +18,9 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
 -overcommit mem-lock=off \
 -smp 6,sockets=6,cores=1,threads=1 \
 -object '{"qom-type":"iothread","id":"iothread2","thread-pool-min":0,"thread-pool-max":60}' \
--object '{"qom-type":"iothread","id":"iothread4","thread-pool-min":1,"thread-pool-max":1}' \
--object '{"qom-type":"iothread","id":"iothread1"}' \
--object '{"qom-type":"iothread","id":"iothread3"}' \
+-object '{"qom-type":"iothread","id":"iothread4","thread-pool-min":1,"thread-pool-max":1,"poll-max-ns":123}' \
+-object '{"qom-type":"iothread","id":"iothread1","poll-grow":456,"poll-shrink":789}' \
+-object '{"qom-type":"iothread","id":"iothread3","poll-max-ns":123000,"poll-grow":456,"poll-shrink":789}' \
 -object '{"qom-type":"iothread","id":"iothread5"}' \
 -object '{"qom-type":"main-loop","id":"main-loop","thread-pool-min":8,"thread-pool-max":16}' \
 -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \