mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
migration: Switch to COLO process after finishing loadvm
Switch from normal migration loadvm process into COLO checkpoint process if COLO mode is enabled. We add three new members to struct MigrationIncomingState, 'have_colo_incoming_thread' and 'colo_incoming_thread' record the COLO related thread for secondary VM, 'migration_incoming_co' records the original migration incoming coroutine. Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com> Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Reviewed-by: Amit Shah <amit.shah@redhat.com> Signed-off-by: Amit Shah <amit@amitshah.net>
This commit is contained in:
parent
0b827d5e72
commit
25d0c16f62
6 changed files with 67 additions and 0 deletions
|
@ -407,6 +407,18 @@ static void process_incoming_migration_co(void *opaque)
|
|||
/* Else if something went wrong then just fall out of the normal exit */
|
||||
}
|
||||
|
||||
/* we get COLO info, and know if we are in COLO mode */
|
||||
if (!ret && migration_incoming_enable_colo()) {
|
||||
mis->migration_incoming_co = qemu_coroutine_self();
|
||||
qemu_thread_create(&mis->colo_incoming_thread, "COLO incoming",
|
||||
colo_process_incoming_thread, mis, QEMU_THREAD_JOINABLE);
|
||||
mis->have_colo_incoming_thread = true;
|
||||
qemu_coroutine_yield();
|
||||
|
||||
/* Wait checkpoint incoming thread exit before free resource */
|
||||
qemu_thread_join(&mis->colo_incoming_thread);
|
||||
}
|
||||
|
||||
qemu_fclose(f);
|
||||
free_xbzrle_decoded_buf();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue