Xen 2017/02/28
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJYtcvEAAoJEIlPj0hw4a6QKbsQAOUzqFGnSuiGUyc3Dfa3gHfO HnlEjdJHyU+YReonChVnxJ1iQwzf1z7RETEVOAR91uXgCCRNmt0PRbaOZgAgvLnM w/IJ0uViF4De2yobhg/Hq0GN+9G8cxsEyvtXnMjH/jA+taKFNywHiER9cYt4nq3X uQTtGwqiN2ISsu8oewbkyhhPGP+mKXxGi2rx4bQwVs80C4gvC1jYr9BtCX7BnmZp m9MkeUbwJuHtOtYVE6BQirvxGIK8abk2UM4dmn2714AkYz3Xs0kLSK67Zu8QZtC0 cnSAKiXH+Xsblu1t4M8qgSMywDQNMtmZL2u/SxLHSmVH6EEI9rI4ftvxl0LvXoIg X2dIlxUMoyZ8j8u8gEnWHUF18lfuisZuo3W2Gr619Kp/O42afMZxxWhNNv5TW6wN t8ZlANfJ1E9aYI2mwDjJAgUy8Q9Z4XrjUK7paKvHeevYmsmq7jHIHnSLb5EzWgV5 B+IYitx9sUs54yH0Uw0qIWv4j/2NK/5MFVuE459s9AbX+K/WrH8wr1N71CJYob6J /RIbPpTen5QFFGNgtahBrhgLDgiJyHwYMXwtI1LV2QzPy6tVCxIZJI41IAGD4M8Y jP01bJ8ROWFgvu5+ZkvIZM3NeaBVgVZv1oTd0jBs5CmP/A09DBV9ILOd4M8GRZNz qi/zWdp0Ra4YzIFk1sOM =ne5/ -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/sstabellini/tags/xen-20170228-tag' into staging Xen 2017/02/28 # gpg: Signature made Tue 28 Feb 2017 19:13:08 GMT # gpg: using RSA key 0x894F8F4870E1AE90 # gpg: Good signature from "Stefano Stabellini <sstabellini@kernel.org>" # gpg: aka "Stefano Stabellini <stefano.stabellini@eu.citrix.com>" # Primary key fingerprint: D04E 33AB A51F 67BA 07D3 0AEA 894F 8F48 70E1 AE90 * remotes/sstabellini/tags/xen-20170228-tag: Add a new qmp command to do checkpoint, query xen replication status Add a new qmp command to start/stop replication Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
1e0addb682
@ -19,6 +19,8 @@
|
||||
#include "qemu/error-report.h"
|
||||
#include "qapi/error.h"
|
||||
#include "migration/failover.h"
|
||||
#include "replication.h"
|
||||
#include "qmp-commands.h"
|
||||
|
||||
static bool vmstate_loading;
|
||||
|
||||
@ -147,6 +149,53 @@ void colo_do_failover(MigrationState *s)
|
||||
}
|
||||
}
|
||||
|
||||
void qmp_xen_set_replication(bool enable, bool primary,
|
||||
bool has_failover, bool failover,
|
||||
Error **errp)
|
||||
{
|
||||
ReplicationMode mode = primary ?
|
||||
REPLICATION_MODE_PRIMARY :
|
||||
REPLICATION_MODE_SECONDARY;
|
||||
|
||||
if (has_failover && enable) {
|
||||
error_setg(errp, "Parameter 'failover' is only for"
|
||||
" stopping replication");
|
||||
return;
|
||||
}
|
||||
|
||||
if (enable) {
|
||||
replication_start_all(mode, errp);
|
||||
} else {
|
||||
if (!has_failover) {
|
||||
failover = NULL;
|
||||
}
|
||||
replication_stop_all(failover, failover ? NULL : errp);
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
|
@ -5989,6 +5989,79 @@
|
||||
##
|
||||
{ 'command': 'xen-load-devices-state', 'data': {'filename': 'str'} }
|
||||
|
||||
##
|
||||
# @xen-set-replication:
|
||||
#
|
||||
# Enable or disable replication.
|
||||
#
|
||||
# @enable: true to enable, false to disable.
|
||||
#
|
||||
# @primary: true for primary or false for secondary.
|
||||
#
|
||||
# @failover: #optional true to do failover, false to stop. but cannot be
|
||||
# specified if 'enable' is true. default value is false.
|
||||
#
|
||||
# Returns: nothing.
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# -> { "execute": "xen-set-replication",
|
||||
# "arguments": {"enable": true, "primary": false} }
|
||||
# <- { "return": {} }
|
||||
#
|
||||
# Since: 2.9
|
||||
##
|
||||
{ '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
Block a user