From 93b15ba0f2eb7858f8d88a5fd7354bd48bb7fc8d Mon Sep 17 00:00:00 2001 From: Lin Ma Date: Thu, 16 Apr 2020 12:44:51 +0800 Subject: [PATCH] qemu: fix hang in p2p + xbzrle compression + parallel migration 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 Message-Id: <20200416044451.21134-1-lma@suse.com> Reviewed-by: Jiri Denemark --- 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) {