diff options
author | Lukas Straub <lukasstraub2@web.de> | 2020-05-20 22:42:32 +0200 |
---|---|---|
committer | Dr. David Alan Gilbert <dgilbert@redhat.com> | 2020-06-01 18:44:27 +0100 |
commit | 773861274ad75a62c7ecf70ecc8e4ba31ed62190 (patch) | |
tree | 31157f69fb4df25952b5457db0e1ecb73921a1eb /migration | |
parent | 4fa8ed25b8dc996d92c60fb6b63752593be5f3a4 (diff) | |
download | qemu-773861274ad75a62c7ecf70ecc8e4ba31ed62190.zip qemu-773861274ad75a62c7ecf70ecc8e4ba31ed62190.tar.gz qemu-773861274ad75a62c7ecf70ecc8e4ba31ed62190.tar.bz2 |
migration/migration.c: Fix hang in ram_save_host_page
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>
Diffstat (limited to 'migration')
-rw-r--r-- | migration/migration.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/migration/migration.c b/migration/migration.c index 0bb042a..b63ad91 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -3361,6 +3361,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. |