diff options
author | Zhang Chen <zhangckid@gmail.com> | 2018-09-03 12:38:47 +0800 |
---|---|---|
committer | Jason Wang <jasowang@redhat.com> | 2018-10-19 11:15:03 +0800 |
commit | aad555c2294b5de22524b7dbacc728d51cc63bcc (patch) | |
tree | 2f83c8e78d6866ec5ae7a6f5c80225d0b9751f67 /migration/migration.c | |
parent | 8e48ac95865ac97d10a81cb7a5bbae310878f519 (diff) | |
download | qemu-aad555c2294b5de22524b7dbacc728d51cc63bcc.zip qemu-aad555c2294b5de22524b7dbacc728d51cc63bcc.tar.gz qemu-aad555c2294b5de22524b7dbacc728d51cc63bcc.tar.bz2 |
COLO: Remove colo_state migration struct
We need to know if migration is going into COLO state for
incoming side before start normal migration.
Instead by using the VMStateDescription to send colo_state
from source side to destination side, we use MIG_CMD_ENABLE_COLO
to indicate whether COLO is enabled or not.
Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com>
Signed-off-by: Zhang Chen <zhangckid@gmail.com>
Signed-off-by: Zhang Chen <chen.zhang@intel.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Diffstat (limited to 'migration/migration.c')
-rw-r--r-- | migration/migration.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/migration/migration.c b/migration/migration.c index bf5fcd1..215e81a 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -296,6 +296,22 @@ int migrate_send_rp_req_pages(MigrationIncomingState *mis, const char *rbname, return migrate_send_rp_message(mis, msg_type, msglen, bufc); } +static bool migration_colo_enabled; +bool migration_incoming_colo_enabled(void) +{ + return migration_colo_enabled; +} + +void migration_incoming_disable_colo(void) +{ + migration_colo_enabled = false; +} + +void migration_incoming_enable_colo(void) +{ + migration_colo_enabled = true; +} + void qemu_start_incoming_migration(const char *uri, Error **errp) { const char *p; @@ -418,7 +434,7 @@ static void process_incoming_migration_co(void *opaque) } /* we get COLO info, and know if we are in COLO mode */ - if (!ret && migration_incoming_enable_colo()) { + if (!ret && migration_incoming_colo_enabled()) { /* Make sure all file formats flush their mutable metadata */ bdrv_invalidate_cache_all(&local_err); if (local_err) { @@ -3025,6 +3041,11 @@ static void *migration_thread(void *opaque) qemu_savevm_send_postcopy_advise(s->to_dst_file); } + if (migrate_colo_enabled()) { + /* Notify migration destination that we enable COLO */ + qemu_savevm_send_colo_enable(s->to_dst_file); + } + qemu_savevm_state_setup(s->to_dst_file); s->setup_time = qemu_clock_get_ms(QEMU_CLOCK_HOST) - setup_start; |