[libvirt] [PATCH] qemu: Ignore graphics cookie if port == 0

Michal Privoznik mprivozn at redhat.com
Wed Sep 21 11:54:47 UTC 2016


On 21.09.2016 10:04, Jiri Denemark wrote:
> Old libvirt represents
> 
>     <graphics type='spice'>
>       <listen type='none'/>
>     </graphics>
> 
> as
> 
>     <graphics type='spice' autoport='no'/>
> 
> In this mode, QEMU doesn't listen for SPICE connection anywhere and
> clients have to use virDomainOpenGraphics* APIs to attach to the domain.
> That is, the client has to run on the same host where the domains runs
> and it's impossible to tell the client to reconnect to the destination
> QEMU during migration (unless there is some kind of proxy on the host).
> 
> While current libvirt correctly ignores such graphics devices when
> creating graphics migration cookie, old libvirt just sends
> 
>     <graphics type='spice' port='0' listen='0.0.0.0' tlsPort='-1'/>
> 
> in the cookie. After seeing this cookie, we happily would call
> client_migrate_info QMP command and wait for SPICE_MIGRATE_COMPLETED
> event, which is quite pointless since the doesn't know where to connecti
> anyway. We should just ignore such cookies.
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=1376083
> 
> Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> ---
>  src/qemu/qemu_migration.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> index e734816..8a220d9 100644
> --- a/src/qemu/qemu_migration.c
> +++ b/src/qemu/qemu_migration.c
> @@ -2903,6 +2903,15 @@ qemuDomainMigrateGraphicsRelocate(virQEMUDriverPtr driver,
>          goto cleanup;
>      }
>  
> +    /* Older libvirt sends port == 0 for listen type='none' graphics. It's
> +     * safe to ignore such requests since relocation to unknown port does
> +     * not make sense in general.
> +     */
> +    if (port <= 0 && tlsPort <= 0) {
> +        ret = 0;
> +        goto cleanup;
> +    }
> +
>      if (qemuDomainObjEnterMonitorAsync(driver, vm,
>                                         QEMU_ASYNC_JOB_MIGRATION_OUT) == 0) {
>          ret = qemuMonitorGraphicsRelocate(priv->mon, type, listenAddress,
> 

ACK

Michal




More information about the libvir-list mailing list