diff options
author | Zhang Chen <zhangchen.fnst@cn.fujitsu.com> | 2017-02-28 11:01:56 -0800 |
---|---|---|
committer | Stefano Stabellini <sstabellini@kernel.org> | 2017-02-28 11:01:56 -0800 |
commit | 2c9639ecabdb18c3281eba03c509f55efde80aa0 (patch) | |
tree | 52630c49abf39256e4ad9bbebc764e5790e39f24 /migration/colo.c | |
parent | 7d1730b7d9d8272a13245adfc9b0405e5a4bd0c2 (diff) |
Add a new qmp command to start/stop replication
We can call this qmp command to start/stop replication outside of qemu.
Like Xen colo 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>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Reviewed-by: zhanghailiang <zhang.zhanghailiang@huawei.com>
Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
Diffstat (limited to 'migration/colo.c')
-rw-r--r-- | migration/colo.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/migration/colo.c b/migration/colo.c index 712308ed5e..46bc84db2d 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -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,30 @@ 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); + } +} + static void colo_send_message(QEMUFile *f, COLOMessage msg, Error **errp) { |