From: Michal Privoznik Date: Mon, 16 May 2022 11:57:18 +0000 (+0200) Subject: qemu_validate: Check if QEMU's capable of setting pool size X-Git-Tag: v8.5.0-rc1~99 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=94b71589f192e15aa83dad0d3eb4a6204dc48160;p=thirdparty%2Flibvirt.git qemu_validate: Check if QEMU's capable of setting pool size Since the main-loop and iothread classes are derived from the same class (EventLoopBaseClass) we don't need new capability and can use QEMU_CAPS_IOTHREAD_THREAD_POOL_MAX directly to check whether QEMU's capable of setting defaultiothread pool size. Signed-off-by: Michal Privoznik Reviewed-by: Peter Krempa --- diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 7d11ae2c92..654850f925 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -389,18 +389,30 @@ qemuValidateDomainDefIOThreads(const virDomainDef *def, virQEMUCaps *qemuCaps) { size_t i; + bool needsThreadPoolCap = false; for (i = 0; i < def->niothreadids; i++) { virDomainIOThreadIDDef *iothread = def->iothreadids[i]; - if ((iothread->thread_pool_min != -1 || iothread->thread_pool_max != -1) && - !virQEMUCapsGet(qemuCaps, QEMU_CAPS_IOTHREAD_THREAD_POOL_MAX)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("thread_pool_min and thread_pool_max is not supported by this QEMU binary")); - return -1; + if (iothread->thread_pool_min != -1 || iothread->thread_pool_max != -1) { + needsThreadPoolCap = true; + break; } } + if (def->defaultIOThread && + (def->defaultIOThread->thread_pool_min >= 0 || + def->defaultIOThread->thread_pool_max >= 0)) { + needsThreadPoolCap = true; + } + + if (needsThreadPoolCap && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_IOTHREAD_THREAD_POOL_MAX)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("thread_pool_min and thread_pool_max is not supported by this QEMU binary")); + return -1; + } + return 0; }