#include "qemu/osdep.h"
#include "sysemu/sysemu.h"
+#include "qapi/error.h"
+#include "qapi/qapi-commands-migration.h"
#include "qemu-file-channel.h"
#include "migration.h"
#include "qemu-file.h"
#include "qemu/error-report.h"
#include "migration/failover.h"
#include "replication.h"
-#include "qmp-commands.h"
static bool vmstate_loading;
FAILOVER_STATUS_RELAUNCH);
if (old_state != FAILOVER_STATUS_ACTIVE) {
error_report("Unknown error while do failover for secondary VM,"
- "old_state: %s", FailoverStatus_lookup[old_state]);
+ "old_state: %s", FailoverStatus_str(old_state));
}
return;
}
FAILOVER_STATUS_COMPLETED);
if (old_state != FAILOVER_STATUS_ACTIVE) {
error_report("Incorrect state (%s) while doing failover for "
- "secondary VM", FailoverStatus_lookup[old_state]);
+ "secondary VM", FailoverStatus_str(old_state));
return;
}
/* Notify COLO incoming thread that failover work is finished */
FAILOVER_STATUS_COMPLETED);
if (old_state != FAILOVER_STATUS_ACTIVE) {
error_report("Incorrect state (%s) while doing failover for Primary VM",
- FailoverStatus_lookup[old_state]);
+ FailoverStatus_str(old_state));
return;
}
/* Notify COLO thread that failover work is finished */
if (ret < 0) {
error_setg_errno(errp, -ret, "Can't send COLO message");
}
- trace_colo_send_message(COLOMessage_lookup[msg]);
+ trace_colo_send_message(COLOMessage_str(msg));
}
static void colo_send_message_value(QEMUFile *f, COLOMessage msg,
ret = qemu_file_get_error(f);
if (ret < 0) {
error_setg_errno(errp, -ret, "Failed to send value for message:%s",
- COLOMessage_lookup[msg]);
+ COLOMessage_str(msg));
}
}
error_setg(errp, "%s: Invalid message", __func__);
return msg;
}
- trace_colo_receive_message(COLOMessage_lookup[msg]);
+ trace_colo_receive_message(COLOMessage_str(msg));
return msg;
}
ret = qemu_file_get_error(f);
if (ret < 0) {
error_setg_errno(errp, -ret, "Failed to get value for COLO message: %s",
- COLOMessage_lookup[expect_msg]);
+ COLOMessage_str(expect_msg));
}
return value;
}
uint64_t value;
Error *local_err = NULL;
+ rcu_register_thread();
qemu_sem_init(&mis->colo_incoming_sem, 0);
migrate_set_state(&mis->state, MIGRATION_STATUS_ACTIVE,
}
migration_incoming_exit_colo();
+ rcu_unregister_thread();
return NULL;
}