[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 31/32] migration, qmp: new command "migrate-pause
From: |
Peter Xu |
Subject: |
[Qemu-devel] [PATCH v4 31/32] migration, qmp: new command "migrate-pause" |
Date: |
Wed, 8 Nov 2017 14:01:29 +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 536a771803..30348a5e27 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1485,6 +1485,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 4a3eff62f1..52901f7e2e 100644
--- a/qapi/migration.json
+++ b/qapi/migration.json
@@ -1074,6 +1074,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.12
+#
+# 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.6
- [Qemu-devel] [PATCH v4 19/32] migration: introduce SaveVMHandlers.resume_prepare, (continued)
- [Qemu-devel] [PATCH v4 19/32] migration: introduce SaveVMHandlers.resume_prepare, Peter Xu, 2017/11/08
- [Qemu-devel] [PATCH v4 20/32] migration: synchronize dirty bitmap for resume, Peter Xu, 2017/11/08
- [Qemu-devel] [PATCH v4 21/32] migration: setup ramstate for resume, Peter Xu, 2017/11/08
- [Qemu-devel] [PATCH v4 23/32] migration: free SocketAddress where allocated, Peter Xu, 2017/11/08
- [Qemu-devel] [PATCH v4 22/32] migration: final handshake for the resume, Peter Xu, 2017/11/08
- [Qemu-devel] [PATCH v4 26/32] migration: return incoming task tag for fd, Peter Xu, 2017/11/08
- [Qemu-devel] [PATCH v4 27/32] migration: store listen task tag, Peter Xu, 2017/11/08
- [Qemu-devel] [PATCH v4 29/32] migration: init dst in migration_object_init too, Peter Xu, 2017/11/08
- [Qemu-devel] [PATCH v4 30/32] migration: delay the postcopy-active state switch, Peter Xu, 2017/11/08
- [Qemu-devel] [PATCH v4 32/32] migration, hmp: new command "migrate_pause", Peter Xu, 2017/11/08
- [Qemu-devel] [PATCH v4 31/32] migration, qmp: new command "migrate-pause",
Peter Xu <=
- [Qemu-devel] [PATCH v4 24/32] migration: return incoming task tag for sockets, Peter Xu, 2017/11/08
- [Qemu-devel] [PATCH v4 25/32] migration: return incoming task tag for exec, Peter Xu, 2017/11/08
- [Qemu-devel] [PATCH v4 14/32] migration: wakeup dst ram-load-thread for recover, Peter Xu, 2017/11/08
- [Qemu-devel] [PATCH v4 05/32] migration: implement "postcopy-pause" src logic, Peter Xu, 2017/11/08
- [Qemu-devel] [PATCH v4 07/32] migration: allow src return path to pause, Peter Xu, 2017/11/08
- [Qemu-devel] [PATCH v4 12/32] migration: rebuild channel on source, Peter Xu, 2017/11/08
- [Qemu-devel] [PATCH v4 13/32] migration: new state "postcopy-recover", Peter Xu, 2017/11/08
- [Qemu-devel] [PATCH v4 16/32] migration: new message MIG_RP_MSG_RECV_BITMAP, Peter Xu, 2017/11/08