Add a new qmp command to do checkpoint, query xen replication status

We can call this qmp command to do checkpoint outside of qemu.
Xen colo will need this function.

Signed-off-by: Zhang Chen <zhangchen.fnst@cn.fujitsu.com>
Signed-off-by: Wen Congyang <wencongyang@gmail.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
This commit is contained in:
Zhang Chen 2017-02-25 10:46:04 +08:00 committed by Stefano Stabellini
parent 2c9639ecab
commit daa33c5215
2 changed files with 71 additions and 0 deletions

View File

@ -173,6 +173,29 @@ void qmp_xen_set_replication(bool enable, bool primary,
} }
} }
ReplicationStatus *qmp_query_xen_replication_status(Error **errp)
{
Error *err = NULL;
ReplicationStatus *s = g_new0(ReplicationStatus, 1);
replication_get_error_all(&err);
if (err) {
s->error = true;
s->has_desc = true;
s->desc = g_strdup(error_get_pretty(err));
} else {
s->error = false;
}
error_free(err);
return s;
}
void qmp_xen_colo_do_checkpoint(Error **errp)
{
replication_do_checkpoint_all(errp);
}
static void colo_send_message(QEMUFile *f, COLOMessage msg, static void colo_send_message(QEMUFile *f, COLOMessage msg,
Error **errp) Error **errp)
{ {

View File

@ -6014,6 +6014,54 @@
{ 'command': 'xen-set-replication', { 'command': 'xen-set-replication',
'data': { 'enable': 'bool', 'primary': 'bool', '*failover' : 'bool' } } 'data': { 'enable': 'bool', 'primary': 'bool', '*failover' : 'bool' } }
##
# @ReplicationStatus:
#
# The result format for 'query-xen-replication-status'.
#
# @error: true if an error happened, false if replication is normal.
#
# @desc: #optional the human readable error description string, when
# @error is 'true'.
#
# Since: 2.9
##
{ 'struct': 'ReplicationStatus',
'data': { 'error': 'bool', '*desc': 'str' } }
##
# @query-xen-replication-status:
#
# Query replication status while the vm is running.
#
# Returns: A @ReplicationResult object showing the status.
#
# Example:
#
# -> { "execute": "query-xen-replication-status" }
# <- { "return": { "error": false } }
#
# Since: 2.9
##
{ 'command': 'query-xen-replication-status',
'returns': 'ReplicationStatus' }
##
# @xen-colo-do-checkpoint:
#
# Xen uses this command to notify replication to trigger a checkpoint.
#
# Returns: nothing.
#
# Example:
#
# -> { "execute": "xen-colo-do-checkpoint" }
# <- { "return": {} }
#
# Since: 2.9
##
{ 'command': 'xen-colo-do-checkpoint' }
## ##
# @GICCapability: # @GICCapability:
# #