[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH COLO-Frame v7 18/34] qmp event: Add event notificati
From: |
zhanghailiang |
Subject: |
[Qemu-devel] [PATCH COLO-Frame v7 18/34] qmp event: Add event notification for COLO error |
Date: |
Thu, 9 Jul 2015 11:16:26 +0800 |
If some errors happen during VM's COLO FT stage, it's import to notify the users
this event, Togehter with 'colo_lost_heartbeat', users can intervene in COLO's
failover work immediately.
If users don't want to get involved in COLO's failover verdict,
it is still necessary to notify users that we exit COLO mode.
Cc: Markus Armbruster <address@hidden>
Cc: Michael Roth <address@hidden>
Signed-off-by: zhanghailiang <address@hidden>
Signed-off-by: Li Zhijian <address@hidden>
---
docs/qmp/qmp-events.txt | 16 ++++++++++++++++
migration/colo.c | 10 +++++++++-
qapi/event.json | 15 +++++++++++++++
3 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/docs/qmp/qmp-events.txt b/docs/qmp/qmp-events.txt
index d92cc48..c7b4581 100644
--- a/docs/qmp/qmp-events.txt
+++ b/docs/qmp/qmp-events.txt
@@ -488,6 +488,22 @@ Example:
{"timestamp": {"seconds": 1432121972, "microseconds": 744001},
"event": "MIGRATION", "data": {"status": "completed"}}
+COLO_EXIT
+---------
+
+Emitted when VM finish COLO mode due to some errors happening or
+the request of users.
+
+Data: None.
+
+ - "mode": COLO mode, 'primary' or 'secondary'
+ - "error": Error message (json-string, optional)
+
+Example:
+
+{"timestamp": {"seconds": 2032141960, "microseconds": 417172},
+ "event": "COLO_EXIT", "data": {"mode": "primary"}}
+
STOP
----
diff --git a/migration/colo.c b/migration/colo.c
index 243aa32..70fcf25 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -15,6 +15,7 @@
#include "trace.h"
#include "qemu/error-report.h"
#include "migration/failover.h"
+#include "qapi-event.h"
enum {
COLO_CHECPOINT_READY = 0x46,
@@ -341,6 +342,7 @@ static void *colo_thread(void *opaque)
out:
error_report("colo: some error happens in colo_thread");
+ qapi_event_send_colo_exit("primary", true, "unknown", NULL);;
/* Give users time (2s) to get involved in this verdict */
for (i = 0; i < 10; i++) {
if (failover_request_is_active()) {
@@ -550,13 +552,19 @@ void *colo_process_incoming_checkpoints(void *opaque)
out:
error_report("Detect some error or get a failover request");
+ /*
+ * Here, we raise a qmp event to the user,
+ * It can help user to know what happens, and help deciding whether to
+ * do failover.
+ */
+ qapi_event_send_colo_exit("secondary", true, "unknown", NULL);;
/* Give users time (2s) to get involved in this verdict */
for (i = 0; i < 10; i++) {
if (failover_request_is_active()) {
error_report("Secondary VM will take over work");
break;
}
- usleep(200*1000);
+ usleep(200 * 1000);
}
/* check flag again*/
if (!failover_request_is_active()) {
diff --git a/qapi/event.json b/qapi/event.json
index f0cef01..21dfe3a 100644
--- a/qapi/event.json
+++ b/qapi/event.json
@@ -255,6 +255,21 @@
'data': {'status': 'MigrationStatus'}}
##
+# @COLO_EXIT
+#
+# Emitted when VM finish COLO mode due to some errors happening or
+# the request of users.
+#
+# @mode: 'primary' or 'secondeary'.
+#
+# @error: #optional, error message. Only present on error happening.
+#
+# Since: 2.4
+##
+{ 'event': 'COLO_EXIT',
+ 'data': {'mode': 'str', '*error':'str'}}
+
+##
# @ACPI_DEVICE_OST
#
# Emitted when guest executes ACPI _OST method.
--
1.7.12.4
- [Qemu-devel] [PATCH COLO-Frame v7 11/34] COLO RAM: Load PVM's dirty page into SVM's RAM cache temporarily, (continued)
- [Qemu-devel] [PATCH COLO-Frame v7 11/34] COLO RAM: Load PVM's dirty page into SVM's RAM cache temporarily, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 34/34] COLO: Add block replication into colo process, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 31/34] COLO NIC: Implement NIC checkpoint and failover, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 33/34] COLO: Implement shutdown checkpoint, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 13/34] arch_init: Start to trace dirty pages of SVM, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 01/34] configure: Add parameter for configure to enable/disable COLO support, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 04/34] colo-comm/migration: skip colo info section for special cases, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 03/34] COLO: migrate colo related info to slave, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 19/34] COLO failover: Don't do failover during loading VM's state, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 23/34] COLO NIC: Implement colo nic device interface configure(), zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 18/34] qmp event: Add event notification for COLO error,
zhanghailiang <=
- [Qemu-devel] [PATCH COLO-Frame v7 20/34] COLO: Add new command parameter 'forward_nic' 'colo_script' for net, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 17/34] COLO failover: Implement COLO primary/secondary vm failover work, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 21/34] COLO NIC: Init/remove colo nic devices when add/cleanup tap devices, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 28/34] COLO: Do checkpoint according to the result of packets comparation, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 27/34] COLO: Handle nfnetlink message from proxy module, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 16/34] COLO failover: Introduce state to record failover process, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 26/34] COLO NIC: Some init work related with proxy module, zhanghailiang, 2015/07/08