[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 31/32] migration, qmp: new command "migrate-pause
From: |
Peter Xu |
Subject: |
[Qemu-devel] [PATCH v3 31/32] migration, qmp: new command "migrate-pause" |
Date: |
Mon, 16 Oct 2017 14:52:15 +0800 |
It is used to manually trigger the postcopy pause state. It works just
like when we found the migration stream failed during postcopy, but
provide an explicit way for user in case of misterious socket hangs.
Signed-off-by: Peter Xu <address@hidden>
---
migration/migration.c | 18 ++++++++++++++++++
qapi/migration.json | 22 ++++++++++++++++++++++
2 files changed, 40 insertions(+)
diff --git a/migration/migration.c b/migration/migration.c
index 51e771685c..3d852d233f 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1426,6 +1426,24 @@ void qmp_migrate_incoming(const char *uri, Error **errp)
once = false;
}
+void qmp_migrate_pause(Error **errp)
+{
+ int ret;
+ MigrationState *ms = migrate_get_current();
+
+ if (ms->state != MIGRATION_STATUS_POSTCOPY_ACTIVE) {
+ error_setg(errp, "Migration pause is currently only allowed during"
+ " an active postcopy phase.");
+ return;
+ }
+
+ ret = qemu_file_shutdown(ms->to_dst_file);
+
+ if (ret) {
+ error_setg(errp, "Failed to pause migration stream.");
+ }
+}
+
bool migration_is_blocked(Error **errp)
{
if (qemu_savevm_state_blocked(errp)) {
diff --git a/qapi/migration.json b/qapi/migration.json
index f8132e683a..095aeb4dd2 100644
--- a/qapi/migration.json
+++ b/qapi/migration.json
@@ -1028,6 +1028,28 @@
{ 'command': 'migrate-incoming', 'data': {'uri': 'str' } }
##
+# @migrate-pause:
+#
+# Pause an migration. Currently it can only pause a postcopy
+# migration. Pausing a precopy migration is not supported yet.
+#
+# It is mostly used as a manual way to trigger the postcopy paused
+# state when the network sockets hang due to some reason, so that we
+# can try a recovery afterward.
+#
+# Returns: nothing on success
+#
+# Since: 2.10
+#
+# Example:
+#
+# -> { "execute": "migrate-pause" }
+# <- { "return": {} }
+#
+##
+{ 'command': 'migrate-pause' }
+
+##
# @xen-save-devices-state:
#
# Save the state of all devices to file. The RAM and the block devices
--
2.13.5
- [Qemu-devel] [PATCH v3 21/32] migration: setup ramstate for resume, (continued)
- [Qemu-devel] [PATCH v3 21/32] migration: setup ramstate for resume, Peter Xu, 2017/10/16
- [Qemu-devel] [PATCH v3 22/32] migration: final handshake for the resume, Peter Xu, 2017/10/16
- [Qemu-devel] [PATCH v3 23/32] migration: free SocketAddress where allocated, Peter Xu, 2017/10/16
- [Qemu-devel] [PATCH v3 24/32] migration: return incoming task tag for sockets, Peter Xu, 2017/10/16
- [Qemu-devel] [PATCH v3 25/32] migration: return incoming task tag for exec, Peter Xu, 2017/10/16
- [Qemu-devel] [PATCH v3 26/32] migration: return incoming task tag for fd, Peter Xu, 2017/10/16
- [Qemu-devel] [PATCH v3 27/32] migration: store listen task tag, Peter Xu, 2017/10/16
- [Qemu-devel] [PATCH v3 28/32] migration: allow migrate_incoming for paused VM, Peter Xu, 2017/10/16
- [Qemu-devel] [PATCH v3 29/32] migration: init dst in migration_object_init too, Peter Xu, 2017/10/16
- [Qemu-devel] [PATCH v3 30/32] migration: delay the postcopy-active state switch, Peter Xu, 2017/10/16
- [Qemu-devel] [PATCH v3 31/32] migration, qmp: new command "migrate-pause",
Peter Xu <=
- [Qemu-devel] [PATCH v3 32/32] migration, hmp: new command "migrate_pause", Peter Xu, 2017/10/16
- Re: [Qemu-devel] [PATCH v3 00/32] Migration: postcopy failure recovery, no-reply, 2017/10/16
- Re: [Qemu-devel] [PATCH v3 00/32] Migration: postcopy failure recovery, no-reply, 2017/10/16