forked from pool/libvirt
c93c63891d
- qemu: fix hang in p2p + xbzrle compression + parallel migration 93b15ba0-qemu-fix-hang-in-p2p-xbzrle-compression-parallel-mig.patch bsc#1161159 OBS-URL: https://build.opensuse.org/request/show/794957 OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=822
41 lines
1.7 KiB
Diff
41 lines
1.7 KiB
Diff
commit 93b15ba0f2eb7858f8d88a5fd7354bd48bb7fc8d
|
|
Author: Lin Ma <lma@suse.com>
|
|
Date: Thu Apr 16 12:44:51 2020 +0800
|
|
|
|
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 <lma@suse.com>
|
|
Message-Id: <20200416044451.21134-1-lma@suse.com>
|
|
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
|
|
|
|
Index: libvirt-6.0.0/src/qemu/qemu_migration_params.c
|
|
===================================================================
|
|
--- libvirt-6.0.0.orig/src/qemu/qemu_migration_params.c
|
|
+++ libvirt-6.0.0/src/qemu/qemu_migration_params.c
|
|
@@ -630,7 +630,6 @@ qemuMigrationParamsDump(qemuMigrationPar
|
|
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) {
|