Commit daa33c52 authored by Zhang Chen's avatar Zhang Chen Committed by Stefano Stabellini
Browse files

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: default avatarZhang Chen <zhangchen.fnst@cn.fujitsu.com>
Signed-off-by: default avatarWen Congyang <wencongyang@gmail.com>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
Signed-off-by: default avatarStefano Stabellini <sstabellini@kernel.org>
parent 2c9639ec
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -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,
                              Error **errp)
{
+48 −0
Original line number Diff line number Diff line
@@ -6014,6 +6014,54 @@
{ 'command': 'xen-set-replication',
  '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:
#