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@xxxxxxxxxx> > --- > 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