File migration-migration.c-Fix-hang-in-ram_sa.patch of Package qemu.23275
From: Lukas Straub <lukasstraub2@web.de>
Date: Wed, 20 May 2020 22:42:32 +0200
Subject: migration/migration.c: Fix hang in ram_save_host_page
Git-commit: 773861274ad75a62c7ecf70ecc8e4ba31ed62190
References: bsc#1185591
migration_rate_limit will erroneously ratelimit a shutdown socket,
which causes the migration thread to hang in ram_save_host_page
if the socket is shutdown.
Fix this by explicitly testing if the socket has errors or was
shutdown in migration_rate_limit.
Signed-off-by: Lukas Straub <lukasstraub2@web.de>
Message-Id: <e79085bbe2d46dfa007dd41820194d5e2d4fcd80.1590007004.git.lukasstraub2@web.de>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
(cherry picked from commit 773861274ad75a62c7ecf70ecc8e4ba31ed62190)
Signed-off-by: Lin Ma <lma@suse.com>
---
migration/migration.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/migration/migration.c b/migration/migration.c
index 27500d09a94a8615c935245e23ed..eecb9b54f90b155d20f007290b44 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -3233,6 +3233,10 @@ bool migration_rate_limit(void)
bool urgent = false;
migration_update_counters(s, now);
if (qemu_file_rate_limit(s->to_dst_file)) {
+
+ if (qemu_file_get_error(s->to_dst_file)) {
+ return false;
+ }
/*
* Wait for a delay to do rate limiting OR
* something urgent to post the semaphore.