|
@@ -26,9 +26,7 @@
|
|
|
#include "qemu/rcu.h"
|
|
|
#include "migration/failover.h"
|
|
|
#include "migration/ram.h"
|
|
|
-#ifdef CONFIG_REPLICATION
|
|
|
#include "block/replication.h"
|
|
|
-#endif
|
|
|
#include "net/colo-compare.h"
|
|
|
#include "net/colo.h"
|
|
|
#include "block/block.h"
|
|
@@ -86,7 +84,6 @@ void colo_checkpoint_delay_set(void)
|
|
|
static void secondary_vm_do_failover(void)
|
|
|
{
|
|
|
/* COLO needs enable block-replication */
|
|
|
-#ifdef CONFIG_REPLICATION
|
|
|
int old_state;
|
|
|
MigrationIncomingState *mis = migration_incoming_get_current();
|
|
|
Error *local_err = NULL;
|
|
@@ -151,14 +148,10 @@ static void secondary_vm_do_failover(void)
|
|
|
if (mis->migration_incoming_co) {
|
|
|
qemu_coroutine_enter(mis->migration_incoming_co);
|
|
|
}
|
|
|
-#else
|
|
|
- abort();
|
|
|
-#endif
|
|
|
}
|
|
|
|
|
|
static void primary_vm_do_failover(void)
|
|
|
{
|
|
|
-#ifdef CONFIG_REPLICATION
|
|
|
MigrationState *s = migrate_get_current();
|
|
|
int old_state;
|
|
|
Error *local_err = NULL;
|
|
@@ -199,9 +192,6 @@ static void primary_vm_do_failover(void)
|
|
|
|
|
|
/* Notify COLO thread that failover work is finished */
|
|
|
qemu_sem_post(&s->colo_exit_sem);
|
|
|
-#else
|
|
|
- abort();
|
|
|
-#endif
|
|
|
}
|
|
|
|
|
|
COLOMode get_colo_mode(void)
|
|
@@ -235,7 +225,6 @@ void colo_do_failover(void)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-#ifdef CONFIG_REPLICATION
|
|
|
void qmp_xen_set_replication(bool enable, bool primary,
|
|
|
bool has_failover, bool failover,
|
|
|
Error **errp)
|
|
@@ -289,7 +278,6 @@ void qmp_xen_colo_do_checkpoint(Error **errp)
|
|
|
/* Notify all filters of all NIC to do checkpoint */
|
|
|
colo_notify_filters_event(COLO_EVENT_CHECKPOINT, errp);
|
|
|
}
|
|
|
-#endif
|
|
|
|
|
|
COLOStatus *qmp_query_colo_status(Error **errp)
|
|
|
{
|
|
@@ -453,15 +441,11 @@ static int colo_do_checkpoint_transaction(MigrationState *s,
|
|
|
}
|
|
|
qemu_mutex_lock_iothread();
|
|
|
|
|
|
-#ifdef CONFIG_REPLICATION
|
|
|
replication_do_checkpoint_all(&local_err);
|
|
|
if (local_err) {
|
|
|
qemu_mutex_unlock_iothread();
|
|
|
goto out;
|
|
|
}
|
|
|
-#else
|
|
|
- abort();
|
|
|
-#endif
|
|
|
|
|
|
colo_send_message(s->to_dst_file, COLO_MESSAGE_VMSTATE_SEND, &local_err);
|
|
|
if (local_err) {
|
|
@@ -579,15 +563,11 @@ static void colo_process_checkpoint(MigrationState *s)
|
|
|
object_unref(OBJECT(bioc));
|
|
|
|
|
|
qemu_mutex_lock_iothread();
|
|
|
-#ifdef CONFIG_REPLICATION
|
|
|
replication_start_all(REPLICATION_MODE_PRIMARY, &local_err);
|
|
|
if (local_err) {
|
|
|
qemu_mutex_unlock_iothread();
|
|
|
goto out;
|
|
|
}
|
|
|
-#else
|
|
|
- abort();
|
|
|
-#endif
|
|
|
|
|
|
vm_start();
|
|
|
qemu_mutex_unlock_iothread();
|
|
@@ -755,7 +735,6 @@ static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
-#ifdef CONFIG_REPLICATION
|
|
|
replication_get_error_all(&local_err);
|
|
|
if (local_err) {
|
|
|
error_propagate(errp, local_err);
|
|
@@ -772,9 +751,6 @@ static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
|
|
|
qemu_mutex_unlock_iothread();
|
|
|
return;
|
|
|
}
|
|
|
-#else
|
|
|
- abort();
|
|
|
-#endif
|
|
|
/* Notify all filters of all NIC to do checkpoint */
|
|
|
colo_notify_filters_event(COLO_EVENT_CHECKPOINT, &local_err);
|
|
|
|
|
@@ -881,15 +857,11 @@ void *colo_process_incoming_thread(void *opaque)
|
|
|
object_unref(OBJECT(bioc));
|
|
|
|
|
|
qemu_mutex_lock_iothread();
|
|
|
-#ifdef CONFIG_REPLICATION
|
|
|
replication_start_all(REPLICATION_MODE_SECONDARY, &local_err);
|
|
|
if (local_err) {
|
|
|
qemu_mutex_unlock_iothread();
|
|
|
goto out;
|
|
|
}
|
|
|
-#else
|
|
|
- abort();
|
|
|
-#endif
|
|
|
vm_start();
|
|
|
qemu_mutex_unlock_iothread();
|
|
|
trace_colo_vm_state_change("stop", "run");
|