migration: announce VM's new home just before VM is runnable

We were announcing the dest host's IP as our new IP a bit too soon -- if
there were errors detected after this announcement was done, the
migration is failed and the VM could continue running on the src host --
causing problems later.

Move around the qemu_announce_self() call so it's done just before the
VM is runnable.

Signed-off-by: Amit Shah <amit.shah@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
Amit Shah 2015-10-14 17:37:19 +05:30 committed by Juan Quintela
parent ed1f3e0090
commit 92e3762237

View file

@ -294,7 +294,6 @@ static void process_incoming_migration_co(void *opaque)
migrate_decompress_threads_join(); migrate_decompress_threads_join();
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
qemu_announce_self();
/* Make sure all file formats flush their mutable metadata */ /* Make sure all file formats flush their mutable metadata */
bdrv_invalidate_cache_all(&local_err); bdrv_invalidate_cache_all(&local_err);
@ -305,6 +304,12 @@ static void process_incoming_migration_co(void *opaque)
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
/*
* This must happen after all error conditions are dealt with and
* we're sure the VM is going to be running on this host.
*/
qemu_announce_self();
/* If global state section was not received or we are in running /* If global state section was not received or we are in running
state, we need to obey autostart. Any other state is set with state, we need to obey autostart. Any other state is set with
runstate_set. */ runstate_set. */