[Spice-devel] [PATCH spice] Call migrate_end_complete() after falling back to switch-host

marcandre.lureau at redhat.com marcandre.lureau at redhat.com
Wed Jul 20 13:16:31 UTC 2016


From: Marc-André Lureau <marcandre.lureau at redhat.com>

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 at redhat.com>
---
 server/reds.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/server/reds.c b/server/reds.c
index 10b943a..969fe62 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -2982,6 +2982,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);
 }
-- 
2.9.0



More information about the Spice-devel mailing list