On Thu, Jun 02, 2022 at 09:18:02 +0200, Michal Privoznik wrote:
Introduced in previous commit, QEMU driver needs to be taught how
to set VIR_DOMAIN_IOTHREAD_THREAD_POOL_MIN and
VIR_DOMAIN_IOTHREAD_THREAD_POOL_MAX parameters on given IOThread.
Fortunately, this is fairly trivial to do and since these two
parameters are exposed in domain XML too the update of inactive
XML can be wired up too.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/qemu/qemu_driver.c | 63 +++++++++++++++++++++++++++++++++---
src/qemu/qemu_monitor.h | 4 +++
src/qemu/qemu_monitor_json.c | 2 ++
3 files changed, 64 insertions(+), 5 deletions(-)
[...]
One more thing
diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
index be341d5196..6ce38ffe86 100644
--- a/src/qemu/qemu_monitor.h
+++ b/src/qemu/qemu_monitor.h
@@ -1308,9 +1308,13 @@ struct _qemuMonitorIOThreadInfo {
unsigned long long poll_max_ns;
unsigned int poll_grow;
unsigned int poll_shrink;
+ long long thread_pool_min;
+ long long thread_pool_max;
These are 'long long', but ...
bool set_poll_max_ns;
bool set_poll_grow;
bool set_poll_shrink;
+ bool set_thread_pool_min;
+ bool set_thread_pool_max;
};
int qemuMonitorGetIOThreads(qemuMonitor *mon,
qemuMonitorIOThreadInfo ***iothreads,
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index dc05dfd047..e8fe1eceae 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -7431,6 +7431,8 @@ qemuMonitorJSONSetIOThread(qemuMonitor *mon,
VIR_IOTHREAD_SET_PROP("poll-max-ns", poll_max_ns);
VIR_IOTHREAD_SET_PROP("poll-grow", poll_grow);
VIR_IOTHREAD_SET_PROP("poll-shrink", poll_shrink);
+ VIR_IOTHREAD_SET_PROP("thread-pool-min", thread_pool_min);
+ VIR_IOTHREAD_SET_PROP("thread-pool-max", thread_pool_max);
This macro is defined as:
#define VIR_IOTHREAD_SET_PROP(propName, propVal) \
if (iothreadInfo->set_##propVal) { \
memset(&prop, 0, sizeof(qemuMonitorJSONObjectProperty)); \
prop.type = QEMU_MONITOR_OBJECT_PROPERTY_INT; \
prop.val.iv = iothreadInfo->propVal; \
if (qemuMonitorJSONSetObjectProperty(mon, path, propName, &prop) < 0) \
return -1; \
}
So with your use you have an unchecked overflow possibility when
down-converting the number into an int.
I think all of the above headache can be solved by simply using 'int'
for the thread count.