diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2016-07-20 17:16:31 +0400 |
---|---|---|
committer | Christophe Fergeau <cfergeau@redhat.com> | 2016-07-28 11:57:50 +0200 |
commit | e2ae0b3c3fb6bf367a7551693f8f5b0073b2516c (patch) | |
tree | 3e83c9d3514f7ed47ec2acedd14d965253b43965 | |
parent | 7be1265e96796d4c7be058172655060f97fa21df (diff) |
Call migrate_end_complete() after falling back to switch-hostrefactory-20160728
Eventually, during a seamless migration, qemu may finish to migrate
before the spice client even finished to connect all channels to
destination and informed the server. In this case,
main_channel_client_migrate_src_complete() will fall back to
switch-host method, and reds_mig_fill_wait_disconnect() is called to
complete the migration (disconnecting all channels).
reds_mig_cleanup() is called when all channels are disconnected, but
reds->mig_wait_connect is still TRUE, and it will call
migrate_connect_complete() instead of the expected
migrate_end_complete(). Setting reds->mig_wait_connect to FALSE when
reds_mig_fill_wait_disconnect() solves the issue.
Fixes:
https://bugzilla.redhat.com/show_bug.cgi?id=1352836
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
-rw-r--r-- | server/reds.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/server/reds.c b/server/reds.c index 992cf031..6f886497 100644 --- a/server/reds.c +++ b/server/reds.c @@ -2987,6 +2987,7 @@ static void reds_mig_fill_wait_disconnect(RedsState *reds) reds->mig_wait_disconnect_clients = g_list_append(reds->mig_wait_disconnect_clients, client); } + reds->mig_wait_connect = FALSE; reds->mig_wait_disconnect = TRUE; reds->core->timer_start(reds->mig_timer, MIGRATE_TIMEOUT); } |