aboutsummaryrefslogtreecommitdiff
path: root/migration/migration.c
diff options
context:
space:
mode:
authorZhang Chen <zhangckid@gmail.com>2018-09-03 12:38:46 +0800
committerJason Wang <jasowang@redhat.com>2018-10-19 11:15:03 +0800
commit8e48ac95865ac97d10a81cb7a5bbae310878f519 (patch)
tree9954d2dabeb4e48f052e5f3181eb5c5e60a18981 /migration/migration.c
parent131b2153fc7970fab780dc875f59823e3b23612a (diff)
downloadqemu-8e48ac95865ac97d10a81cb7a5bbae310878f519.zip
qemu-8e48ac95865ac97d10a81cb7a5bbae310878f519.tar.gz
qemu-8e48ac95865ac97d10a81cb7a5bbae310878f519.tar.bz2
COLO: Add block replication into colo process
Make sure master start block replication after slave's block replication started. Besides, we need to activate VM's blocks before goes into COLO state. Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com> Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com> Signed-off-by: Zhang Chen <zhangckid@gmail.com> Signed-off-by: Zhang Chen <chen.zhang@intel.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
Diffstat (limited to 'migration/migration.c')
-rw-r--r--migration/migration.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/migration/migration.c b/migration/migration.c
index 32ce058..bf5fcd1 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -386,6 +386,7 @@ static void process_incoming_migration_co(void *opaque)
MigrationIncomingState *mis = migration_incoming_get_current();
PostcopyState ps;
int ret;
+ Error *local_err = NULL;
assert(mis->from_src_file);
mis->migration_incoming_co = qemu_coroutine_self();
@@ -418,6 +419,15 @@ 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()) {
+ /* Make sure all file formats flush their mutable metadata */
+ bdrv_invalidate_cache_all(&local_err);
+ if (local_err) {
+ migrate_set_state(&mis->state, MIGRATION_STATUS_ACTIVE,
+ MIGRATION_STATUS_FAILED);
+ error_report_err(local_err);
+ exit(EXIT_FAILURE);
+ }
+
qemu_thread_create(&mis->colo_incoming_thread, "COLO incoming",
colo_process_incoming_thread, mis, QEMU_THREAD_JOINABLE);
mis->have_colo_incoming_thread = true;