On 6/7/22 16:59, Peter Krempa wrote:
On Tue, Jun 07, 2022 at 14:52:52 +0200, Michal Privoznik wrote:
> Now that we have a capability that reflects whether QEMU is
> capable of setting iothread pool size, let's introduce a
> validator check to make sure users are not trying to use this
> feature with QEMU that doesn't support it.
>
> Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
> Reviewed-by: Peter Krempa <pkrempa(a)redhat.com>
> ---
> src/qemu/qemu_validate.c | 24 ++++++++++++++++++++++++
> 1 file changed, 24 insertions(+)
>
> diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
> index 9b6245e6d7..7d11ae2c92 100644
> --- a/src/qemu/qemu_validate.c
> +++ b/src/qemu/qemu_validate.c
> @@ -384,6 +384,27 @@ qemuValidateDomainDefCpu(virQEMUDriver *driver,
> }
>
>
> +static int
> +qemuValidateDomainDefIOThreads(const virDomainDef *def,
> + virQEMUCaps *qemuCaps)
> +{
> + size_t i;
> +
> + 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;
> + }
You'll also need a check that 'thread_pool_max', if supplied, must be
more or equal to 'thread_pool_min', otherwise:
$ virsh dumpxml cd | grep thread_pool
<iothread id='3' thread_pool_min='4'
thread_pool_max='3'/>
$ virsh start cd
error: Failed to start domain 'cd'
error: internal error: process exited while connecting to monitor:
2022-06-07T14:58:52.420554Z qemu-system-x86_64: bad thread-pool-min/thread-pool-max
values
Ah, good point. But there's nothing QEMU specific about this so let me
put it into hypervisor agnostic validator. Which in turn allows me to
amend this change to the 06/15 patch where parser/formatter is introduced.
Michal