Re: [PATCH] libvirt: qemu: Fix domain termination caused by query-hotpluggable-cpus not enabled

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Nov 25, 2016 at 09:19:18 +0100, Boris Fiuczynski wrote:
> (Re-)Starting libvirt on a system with running qemu domains which earlier
> had been successfully started by libvirt results in the error
> 
> internal error: unable to execute QEMU command 'query-hotpluggable-cpus':
>   The feature 'query-hotpluggable-cpus' is not enabled
> 
> if the qemu binary does not support the qmp command 'query-hotpluggable-cpus'.
> 
> As libvirt tries to reconnect to the running qemu domains it reads in the
> capabilities but in qemuProcessReconnect misses to run
> virQEMUCapsCacheLookupCopy and not clearing the query-hotpluggable-cpus
> capability in virQEMUCapsFilterByMachineType which was introduced with
> commit 920bbe5c.
> Libvirt therefore issues the qmp command and qemu responds with the error
> 'The feature 'query-hotpluggable-cpus' is not enabled'.
> As a consequence libvirt terminates the running qemu process since it
> determines that it cannot reconnect to the domain.
> 
> Signed-off-by: Boris Fiuczynski <fiuczy@xxxxxxxxxxxxxxxxxx>
> Reviewed-by: Marc Hartmayer <mhartmay@xxxxxxxxxxxxxxxxxx>
> ---
> Due to the severity of this issue I recommend to backport this fix
> into all maintenance releases up to v2.2.0.
> 
>  src/qemu/qemu_process.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
> index f8f379a..675f5b5 100644
> --- a/src/qemu/qemu_process.c
> +++ b/src/qemu/qemu_process.c
> @@ -3349,8 +3349,7 @@ qemuProcessReconnect(void *opaque)
>      /* If upgrading from old libvirtd we won't have found any
>       * caps in the domain status, so re-query them

At reconnect the capabilities are taken from the status XML file, where
they are saved for every instance specifically. This code is supposed to
run

>       */
> -    if (!priv->qemuCaps &&
> -        !(priv->qemuCaps = virQEMUCapsCacheLookupCopy(caps,
> +    if (!(priv->qemuCaps = virQEMUCapsCacheLookupCopy(caps,
>                                                        driver->qemuCapsCache,
>                                                        obj->def->emulator,
>                                                        obj->def->os.machine)))

NACK, this certainly is not the right fix. Does the status XML have the
'query-hotpluggable-cpus' capability set? If it's so then it was
probably mis-detected at start of the VM and should be fixed there.

If there is no such capability, then the reconnect code is broken
somehow.

At any rate we should not re-detect the capabilities if they were
reloaded properly from the XML.

Peter

Attachment: signature.asc
Description: PGP signature

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]
  Powered by Linux