[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 13/14] migration: add "return-path" capability
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PULL 13/14] migration: add "return-path" capability |
Date: |
Wed, 28 Jun 2017 13:31:05 +0200 |
From: Peter Xu <address@hidden>
When this capability is enabled, QEMU will use the return path even for
precopy migration. This is helpful at least in one case when destination
failed to load the image while source quited without confirmation. With
return path, source will wait for the last response from destination,
and if destination fails, it'll fail the migration on source, then the
guest can be run again on the source (rather than assuming to be good,
then the guest will be lost after source quits).
It needs to be enabled explicitly on source, otherwise disabled.
Signed-off-by: Peter Xu <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Dr. David Alan Gilbert <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>
---
migration/migration.c | 16 +++++++++++++---
migration/migration.h | 1 +
qapi-schema.json | 5 ++++-
3 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/migration/migration.c b/migration/migration.c
index 2398a9d..51ccd1a 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1311,6 +1311,15 @@ bool migrate_use_block(void)
return s->enabled_capabilities[MIGRATION_CAPABILITY_BLOCK];
}
+bool migrate_use_return_path(void)
+{
+ MigrationState *s;
+
+ s = migrate_get_current();
+
+ return s->enabled_capabilities[MIGRATION_CAPABILITY_RETURN_PATH];
+}
+
bool migrate_use_block_incremental(void)
{
MigrationState *s;
@@ -1975,10 +1984,11 @@ void migrate_fd_connect(MigrationState *s)
notifier_list_notify(&migration_state_notifiers, s);
/*
- * Open the return path; currently for postcopy but other things might
- * also want it.
+ * Open the return path. For postcopy, it is used exclusively. For
+ * precopy, only if user specified "return-path" capability would
+ * QEMU uses the return path.
*/
- if (migrate_postcopy_ram()) {
+ if (migrate_postcopy_ram() || migrate_use_return_path()) {
if (open_return_path_on_source(s)) {
error_report("Unable to open return-path for postcopy");
migrate_set_state(&s->state, MIGRATION_STATUS_SETUP,
diff --git a/migration/migration.h b/migration/migration.h
index 994b017..148c9fa 100644
--- a/migration/migration.h
+++ b/migration/migration.h
@@ -177,6 +177,7 @@ bool migrate_colo_enabled(void);
bool migrate_use_block(void);
bool migrate_use_block_incremental(void);
+bool migrate_use_return_path(void);
bool migrate_use_compression(void);
int migrate_compress_level(void);
diff --git a/qapi-schema.json b/qapi-schema.json
index 4b50b65..9e34cf7 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -900,12 +900,15 @@
# offers more flexibility.
# (Since 2.10)
#
+# @return-path: If enabled, migration will use the return path even
+# for precopy. (since 2.10)
+#
# Since: 1.2
##
{ 'enum': 'MigrationCapability',
'data': ['xbzrle', 'rdma-pin-all', 'auto-converge', 'zero-blocks',
'compress', 'events', 'postcopy-ram', 'x-colo', 'release-ram',
- 'block' ] }
+ 'block', 'return-path' ] }
##
# @MigrationCapabilityStatus:
--
2.9.4
- [Qemu-devel] [PULL 03/14] vl: clean up global property registration, (continued)
- [Qemu-devel] [PULL 03/14] vl: clean up global property registration, Juan Quintela, 2017/06/28
- [Qemu-devel] [PULL 02/14] accel: introduce AccelClass.global_props, Juan Quintela, 2017/06/28
- [Qemu-devel] [PULL 04/14] migration: let MigrationState be a qdev, Juan Quintela, 2017/06/28
- [Qemu-devel] [PULL 07/14] migration: move skip_configuration out, Juan Quintela, 2017/06/28
- [Qemu-devel] [PULL 05/14] migration: move global_state.optional out, Juan Quintela, 2017/06/28
- [Qemu-devel] [PULL 08/14] migration: move skip_section_footers, Juan Quintela, 2017/06/28
- [Qemu-devel] [PULL 09/14] migration: merge enforce_config_section somewhat, Juan Quintela, 2017/06/28
- [Qemu-devel] [PULL 06/14] migration: move only_migratable to MigrationState, Juan Quintela, 2017/06/28
- [Qemu-devel] [PULL 11/14] migration: add comment for TYPE_MIGRATE, Juan Quintela, 2017/06/28
- [Qemu-devel] [PULL 10/14] migration: hmp: dump globals, Juan Quintela, 2017/06/28
- [Qemu-devel] [PULL 13/14] migration: add "return-path" capability,
Juan Quintela <=
- [Qemu-devel] [PULL 14/14] exec: fix access to ram_list.dirty_memory when sync dirty bitmap, Juan Quintela, 2017/06/28
- [Qemu-devel] [PULL 12/14] vmstate: error hint for failed equal checks, Juan Quintela, 2017/06/28
- Re: [Qemu-devel] [PULL 00/14] Migration pull request for 20170628, Peter Maydell, 2017/06/29