On Tue, Jun 07, 2022 at 14:52:55 +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 | 62 +++++++++++++++++++++++++++++++++---
src/qemu/qemu_monitor.h | 4 +++
src/qemu/qemu_monitor_json.c | 2 ++
3 files changed, 63 insertions(+), 5 deletions(-)
[...]
@@ -5567,10 +5609,20 @@ qemuDomainChgIOThread(virQEMUDriver *driver,
break;
case VIR_DOMAIN_IOTHREAD_ACTION_MOD:
- virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
- _("configuring persistent polling values is "
- "not supported"));
- goto endjob;
+ iothreaddef = virDomainIOThreadIDFind(def, iothread.iothread_id);
This needs to reference 'persistentDef':
When setting the params on an inactive VM:
0x00007ffff7bef078 in virDomainIOThreadIDFind (def=0x0, iothread_id=3) at
../../../libvirt/src/conf/domain_conf.c:22939
22939 if (!def->iothreadids || !def->niothreadids)
(gdb) bt
#0 0x00007ffff7bef078 in virDomainIOThreadIDFind (def=0x0, iothread_id=3) at
../../../libvirt/src/conf/domain_conf.c:22939
#1 0x00007fffcb057309 in qemuDomainChgIOThread (driver=0x7fff9c14e910, vm=0x7fff9c1e5880,
iothread=..., action=VIR_DOMAIN_IOTHREAD_ACTION_MOD, flags=0)
at ../../../libvirt/src/qemu/qemu_driver.c:5612
#2 0x00007fffcb057aee in qemuDomainSetIOThreadParams (dom=0x7fff94014c10, iothread_id=3,
params=0x7fffe4015820, nparams=1, flags=0)
at ../../../libvirt/src/qemu/qemu_driver.c:5755
#3 0x00007ffff7e26f18 in virDomainSetIOThreadParams (domain=0x7fff94014c10,
iothread_id=3, params=0x7fffe4015820, nparams=1, flags=0)
at ../../../libvirt/src/libvirt-domain.c:8422
#4 0x00005555555933d5 in remoteDispatchDomainSetIOThreadParams (server=0x555555628080,
client=0x5555556eb230, msg=0x5555556ee930, rerr=0x7ffff4c1e800, args=0x7fffe43c4650)
at src/remote/remote_daemon_dispatch_stubs.h:11062
#5 0x00005555555932cc in remoteDispatchDomainSetIOThreadParamsHelper
(server=0x555555628080, client=0x5555556eb230, msg=0x5555556ee930,
rerr=0x7ffff4c1e800, args=0x7fffe43c4650, ret=0x0) at
src/remote/remote_daemon_dispatch_stubs.h:11032
#6 0x00007ffff7c906b6 in virNetServerProgramDispatchCall (prog=0x5555556dcc10,
server=0x555555628080, client=0x5555556eb230, msg=0x5555556ee930)
at ../../../libvirt/src/rpc/virnetserverprogram.c:428
#7 0x00007ffff7c901fb in virNetServerProgramDispatch (prog=0x5555556dcc10,
server=0x555555628080, client=0x5555556eb230, msg=0x5555556ee930)
at ../../../libvirt/src/rpc/virnetserverprogram.c:302
#8 0x00007ffff7c98f63 in virNetServerProcessMsg (srv=0x555555628080,
client=0x5555556eb230, prog=0x5555556dcc10, msg=0x5555556ee930)
at ../../../libvirt/src/rpc/virnetserver.c:136
#9 0x00007ffff7c99029 in virNetServerHandleJob (jobOpaque=0x5555556f05e0,
opaque=0x555555628080) at ../../../libvirt/src/rpc/virnetserver.c:156
#10 0x00007ffff7b7628b in virThreadPoolWorker (opaque=0x555555624ec0) at
../../../libvirt/src/util/virthreadpool.c:164
#11 0x00007ffff7b7572a in virThreadHelper (data=0x555555624ee0) at
../../../libvirt/src/util/virthread.c:256
#12 0x00007ffff74abe1d in start_thread () at /lib64/libc.so.6
#13 0x00007ffff75315e0 in clone3 () at /lib64/libc.so.6