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:
		
							parent
							
								
									2c9639ecab
								
							
						
					
					
						commit
						daa33c5215
					
				| 
						 | 
				
			
			@ -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)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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:
 | 
			
		||||
#
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue