From: Zhang Chen <chen.zhang@intel.com >
To: Li Zhijian <lizhijian@cn.fujitsu.com>,
Zhang Chen <zhangckid@gmail.com>,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
Juan Quintela <quintela@redhat.com>,
zhanghailiang <zhang.zhanghailiang@huawei.com>,
Markus Armbruster <armbru@redhat.com>,
Eric Blake <eblake@redhat.com>, qemu-dev <qemu-devel@nongnu.org>
Cc: Zhang Chen <chen.zhang@intel.com>
Subject: [Qemu-devel] [PATCH V2 4/7] Migration/colo.c: Add new COLOExitReason to handle all failover state
Date: Fri, 1 Mar 2019 00:55:05 +0800 [thread overview]
Message-ID: <20190228165508.21594-5-chen.zhang@intel.com> (raw)
In-Reply-To: <20190228165508.21594-1-chen.zhang@intel.com>
From: Zhang Chen <chen.zhang@intel.com>
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 <chen.zhang@intel.com>
---
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 7a795ecc16..48e21880a3 100644
--- a/qapi/migration.json
+++ b/qapi/migration.json
@@ -983,19 +983,22 @@
##
# @COLOExitReason:
#
-# The reason for a COLO exit
+# Describe the reason for 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 occurred
+# in the COLO_EXIT event, only happened in the result of
+# query-colo-status.
#
-# @request: COLO exit is due to an external request
+# @request: COLO exit caused by an external request.
#
-# @error: COLO exit is due to an internal error
+# @error: COLO exit caused by an internal error.
+#
+# @processing: COLO in failover handling state.
#
# Since: 3.1
##
{ 'enum': 'COLOExitReason',
- 'data': [ 'none', 'request', 'error' ] }
+ 'data': [ 'none', 'request', 'error' , 'processing' ] }
##
# @x-colo-lost-heartbeat:
--
2.17.GIT
next prev parent reply other threads:[~2019-02-28 16:58 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-28 16:55 [Qemu-devel] [PATCH V2 0/7] Migration/colo: Fix upstream bugs when occur failover Zhang Chen
2019-02-28 16:55 ` [Qemu-devel] [PATCH V2 1/7] Migration/colo.c: Fix double close bug when occur COLO failover Zhang Chen
2019-02-28 16:55 ` [Qemu-devel] [PATCH V2 2/7] Migration/colo.c: Fix COLO failover status error Zhang Chen
2019-02-28 16:55 ` [Qemu-devel] [PATCH V2 3/7] Migration/colo.c: Make COLO node running after failover Zhang Chen
2019-02-28 16:55 ` Zhang Chen [this message]
2019-02-28 17:05 ` [Qemu-devel] [PATCH V2 4/7] Migration/colo.c: Add new COLOExitReason to handle all failover state Eric Blake
2019-03-03 14:23 ` Zhang, Chen
2019-02-28 16:55 ` [Qemu-devel] [PATCH V2 5/7] qapi/migration.json: Remove a variable that doesn't exist in example Zhang Chen
2019-02-28 17:07 ` Eric Blake
2019-03-03 14:24 ` Zhang, Chen
2019-02-28 16:55 ` [Qemu-devel] [PATCH V2 6/7] Migration/colo.c: Add the necessary checks for colo_do_failover Zhang Chen
2019-02-28 16:55 ` [Qemu-devel] [PATCH V2 7/7] Migration/colo.c: Make user obtain the COLO mode info after failover Zhang Chen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190228165508.21594-5-chen.zhang@intel.com \
--to=chen.zhang@intel.com \
--cc=armbru@redhat.com \
--cc=dgilbert@redhat.com \
--cc=eblake@redhat.com \
--cc=lizhijian@cn.fujitsu.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=zhang.zhanghailiang@huawei.com \
--cc=zhangckid@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).