summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Krempa <pkrempa@redhat.com>2023-02-23 14:27:17 +0100
committerPeter Krempa <pkrempa@redhat.com>2023-05-02 14:32:47 +0200
commit4b5a9e34ad36872ffb941772d86a210e36753de2 (patch)
treed22846631b8435926700fbe073326789b2cf2cdf
parent83eee66f811cc81c632738b84129f006035a88d0 (diff)
downloadlibvirt-4b5a9e34ad36872ffb941772d86a210e36753de2.tar.gz
qemu: Use configured iothread poll parameters on startup
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>
-rw-r--r--src/qemu/qemu_command.c18
-rw-r--r--src/qemu/qemu_driver.c30
-rw-r--r--tests/qemuxml2argvdata/iothreads-ids-pool-sizes.x86_64-latest.args6
3 files changed, 37 insertions, 17 deletions
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 58a0484b33..dcad449413 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -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;
}
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index b6a34c02ab..00b58e0424 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -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;
}
}
diff --git a/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.x86_64-latest.args b/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.x86_64-latest.args
index 4f5a11aab1..1422e94e35 100644
--- a/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.x86_64-latest.args
@@ -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 \