[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 12/15] Migration/colo.c: Add new COLOExitReason to ha
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PULL 12/15] Migration/colo.c: Add new COLOExitReason to handle all failover state |
Date: |
Mon, 25 Mar 2019 18:47:03 +0100 |
From: Zhang Chen <address@hidden>
In this patch we add the processing state for COLOExitReason,
because we have to identify COLO in the failover processing state or
failover error state. In the way, we can handle all the failover state.
We have improved the description of the COLOExitReason by the way.
Signed-off-by: Zhang Chen <address@hidden>
Reviewed-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>
---
migration/colo.c | 24 +++++++++++++-----------
qapi/migration.json | 15 +++++++++------
2 files changed, 22 insertions(+), 17 deletions(-)
diff --git a/migration/colo.c b/migration/colo.c
index 89325952c7..dbe2b88807 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -267,7 +267,11 @@ COLOStatus *qmp_query_colo_status(Error **errp)
s->reason = COLO_EXIT_REASON_REQUEST;
break;
default:
- s->reason = COLO_EXIT_REASON_ERROR;
+ if (migration_in_colo_state()) {
+ s->reason = COLO_EXIT_REASON_PROCESSING;
+ } else {
+ s->reason = COLO_EXIT_REASON_ERROR;
+ }
}
return s;
@@ -579,16 +583,13 @@ out:
* or the user triggered failover.
*/
switch (failover_get_state()) {
- case FAILOVER_STATUS_NONE:
- qapi_event_send_colo_exit(COLO_MODE_PRIMARY,
- COLO_EXIT_REASON_ERROR);
- break;
case FAILOVER_STATUS_COMPLETED:
qapi_event_send_colo_exit(COLO_MODE_PRIMARY,
COLO_EXIT_REASON_REQUEST);
break;
default:
- abort();
+ qapi_event_send_colo_exit(COLO_MODE_PRIMARY,
+ COLO_EXIT_REASON_ERROR);
}
/* Hope this not to be too long to wait here */
@@ -850,17 +851,18 @@ out:
error_report_err(local_err);
}
+ /*
+ * There are only two reasons we can get here, some error happened
+ * or the user triggered failover.
+ */
switch (failover_get_state()) {
- case FAILOVER_STATUS_NONE:
- qapi_event_send_colo_exit(COLO_MODE_SECONDARY,
- COLO_EXIT_REASON_ERROR);
- break;
case FAILOVER_STATUS_COMPLETED:
qapi_event_send_colo_exit(COLO_MODE_SECONDARY,
COLO_EXIT_REASON_REQUEST);
break;
default:
- abort();
+ qapi_event_send_colo_exit(COLO_MODE_SECONDARY,
+ COLO_EXIT_REASON_ERROR);
}
if (fb) {
diff --git a/qapi/migration.json b/qapi/migration.json
index 0a85aadd15..e383951765 100644
--- a/qapi/migration.json
+++ b/qapi/migration.json
@@ -1038,19 +1038,22 @@
##
# @COLOExitReason:
#
-# The reason for a COLO exit
+# The reason for a COLO exit.
#
-# @none: no failover has ever happened. This can't occur in the
-# COLO_EXIT event, only in the result of query-colo-status.
+# @none: failover has never happened. This state does not occur
+# in the COLO_EXIT event, and is only visible in the result of
+# query-colo-status.
#
-# @request: COLO exit is due to an external request
+# @request: COLO exit is due to an external request.
#
-# @error: COLO exit is due to an internal error
+# @error: COLO exit is due to an internal error.
+#
+# @processing: COLO is currently handling a failover (since 4.0).
#
# Since: 3.1
##
{ 'enum': 'COLOExitReason',
- 'data': [ 'none', 'request', 'error' ] }
+ 'data': [ 'none', 'request', 'error' , 'processing' ] }
##
# @x-colo-lost-heartbeat:
--
2.20.1
- [Qemu-devel] [PULL 00/15] Migration patches, Juan Quintela, 2019/03/25
- [Qemu-devel] [PULL 15/15] migration/postcopy: Update the bandwidth during postcopy, Juan Quintela, 2019/03/25
- [Qemu-devel] [PULL 13/15] Migration/colo.c: Add the necessary checks for colo_do_failover, Juan Quintela, 2019/03/25
- [Qemu-devel] [PULL 14/15] Migration/colo.c: Make user obtain the last COLO mode info after failover, Juan Quintela, 2019/03/25
- [Qemu-devel] [PULL 09/15] migration: add support for a "tls-authz" migration parameter, Juan Quintela, 2019/03/25
- [Qemu-devel] [PULL 10/15] migration/rdma: Check qemu_rdma_init_one_block, Juan Quintela, 2019/03/25
- [Qemu-devel] [PULL 07/15] multifd: Add some padding, Juan Quintela, 2019/03/25
- [Qemu-devel] [PULL 02/15] multifd: Rename "size" member to pages_alloc, Juan Quintela, 2019/03/25
- [Qemu-devel] [PULL 12/15] Migration/colo.c: Add new COLOExitReason to handle all failover state,
Juan Quintela <=
- [Qemu-devel] [PULL 11/15] Migration/colo.c: Fix COLO failover status error, Juan Quintela, 2019/03/25
- [Qemu-devel] [PULL 06/15] multifd: Change default packet size, Juan Quintela, 2019/03/25
- [Qemu-devel] [PULL 08/15] multifd: Drop x-, Juan Quintela, 2019/03/25
- [Qemu-devel] [PULL 05/15] multifd: Be flexible about packet size, Juan Quintela, 2019/03/25
- [Qemu-devel] [PULL 03/15] multifd: Create new next_packet_size field, Juan Quintela, 2019/03/25
- [Qemu-devel] [PULL 01/15] multifd: Only send pages when packet are not empty, Juan Quintela, 2019/03/25
- [Qemu-devel] [PULL 04/15] multifd: Drop x-multifd-page-count parameter, Juan Quintela, 2019/03/25
- Re: [Qemu-devel] [PULL 00/15] Migration patches, Peter Maydell, 2019/03/26