[libvirt] [PATCH] qemu: fix hang in p2p + xbzrle compression + parallel migration

Jiri Denemark jdenemar at redhat.com
Thu Apr 16 07:55:08 UTC 2020


On Thu, Apr 16, 2020 at 12:44:51 +0800, Lin Ma wrote:
> When we do parallel migration, The multifd-channels migration parameter
> needs to be set on the destination side as well before incoming migration
> URI, unless we accept the default number of connections(2).
> 
> Usually, This can be correctly handled by libvirtd. But in this case if
> we use p2p + xbzrle compression without parameter '--comp-xbzrle-cache',
> qemuMigrationParamsDump returns too early, The corresponding migration 
> parameter will not be set on the destination side, It results QEMU hangs.
> 
> Reproducer:
> virsh migrate --live --p2p --comp-methods xbzrle \
> --parallel --parallel-connections 3 GUEST qemu+ssh://dsthost/system
> 
> or
> 
> virsh migrate --live --p2p --compressed \
> --parallel --parallel-connections 3 GUEST qemu+ssh://dsthost/system
> 
> Signed-off-by: Lin Ma <lma at suse.com>
> ---
>  src/qemu/qemu_migration_params.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_params.c
> index dd5e2ce1b6..810199370f 100644
> --- a/src/qemu/qemu_migration_params.c
> +++ b/src/qemu/qemu_migration_params.c
> @@ -630,7 +630,6 @@ qemuMigrationParamsDump(qemuMigrationParamsPtr migParams,
>      if (migParams->compMethods == 1ULL << QEMU_MIGRATION_COMPRESS_XBZRLE &&
>          !migParams->params[QEMU_MIGRATION_PARAM_XBZRLE_CACHE_SIZE].set) {
>          *flags |= VIR_MIGRATE_COMPRESSED;
> -        return 0;
>      }
>  
>      for (i = 0; i < QEMU_MIGRATION_COMPRESS_LAST; ++i) {

Oops, looks like a leftover from the past when xbzrle-cache-size was
the only parameter.

Reviewed-by: Jiri Denemark <jdenemar at redhat.com>




More information about the libvir-list mailing list