[libvirt] [PATCH 5/5] qemu: Fix condition for checking vcpu when pinning vcpus

John Ferlan jferlan at redhat.com
Tue Apr 14 01:43:22 UTC 2015



On 04/07/2015 02:50 PM, Peter Krempa wrote:
> Previously we checked that the vcpu we are trying to set is in range of
> the number of threads presented by qemu. The problem is that if the VM
> is offline the count is 0. Since the condition subtracted 1 from the
> count the number would overflow and the check would never trigger.
> 
> Change the condition for more sensible ones with specific error
> messages.
> 
> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1208434
> ---
>  src/qemu/qemu_driver.c | 13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
> 

ah yes, I remember pondering this code while working through the
IOThreads pinning code.

ACK

John

BTW: As with the add/del IOThreads code - this is yet another one of
those places where using [n]vcpupids caused me to make a [n]iothreadpids


> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 6132674..9c6b905 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -5084,10 +5084,17 @@ qemuDomainPinVcpuFlags(virDomainPtr dom,
> 
>      priv = vm->privateData;
> 
> -    if (vcpu > (priv->nvcpupids-1)) {
> +    if ((flags & VIR_DOMAIN_AFFECT_LIVE) && vcpu >= vm->def->vcpus) {
>          virReportError(VIR_ERR_INVALID_ARG,
> -                       _("vcpu number out of range %d > %d"),
> -                       vcpu, priv->nvcpupids - 1);
> +                       _("vcpu %d is out of range of live cpu count %d"),
> +                       vcpu, vm->def->vcpus);
> +        goto endjob;
> +    }
> +
> +    if ((flags & VIR_DOMAIN_AFFECT_CONFIG) && vcpu >= persistentDef->vcpus) {
> +        virReportError(VIR_ERR_INVALID_ARG,
> +                       _("vcpu %d is out of range of persistent cpu count %d"),
> +                       vcpu, persistentDef->vcpus);
>          goto endjob;
>      }
> 




More information about the libvir-list mailing list