bool migration_in_colo_state(void);
/* loadvm */
-int migration_incoming_enable_colo(Error **errp);
-void migration_incoming_disable_colo(void);
bool migration_incoming_in_colo_state(void);
COLOMode get_colo_mode(void);
return migrate_send_rp_message_req_pages(mis, rb, start);
}
-static bool migration_colo_enabled;
-void migration_incoming_disable_colo(void)
-{
- ram_block_discard_disable(false);
- migration_colo_enabled = false;
-}
-
-int migration_incoming_enable_colo(Error **errp)
-{
-#ifndef CONFIG_REPLICATION
- error_setg(errp, "ENABLE_COLO command come in migration stream, but the "
- "replication module is not built in");
- return -ENOTSUP;
-#endif
-
- if (!migrate_colo()) {
- error_setg(errp, "ENABLE_COLO command come in migration stream"
- ", but x-colo capability is not set");
- return -EINVAL;
- }
-
- migration_colo_enabled = true;
- return 0;
-}
-
void migrate_add_address(SocketAddress *address)
{
MigrationIncomingState *mis = migration_incoming_get_current();
runstate_set(RUN_STATE_PAUSED);
}
} else if (migrate_colo()) {
- migration_incoming_disable_colo();
vm_start();
} else {
runstate_set(global_state_get_runstate());
qemu_savevm_send_postcopy_advise(s->to_dst_file);
}
- if (migrate_colo()) {
- /* Notify migration destination that we enable COLO */
- qemu_savevm_send_colo_enable(s->to_dst_file);
- }
-
if (migrate_auto_converge()) {
/* Start RAMBlock dirty bitmap sync timer */
cpu_throttle_dirty_sync_timer(true);
were previously sent during
precopy but are dirty. */
MIG_CMD_PACKAGED, /* Send a wrapped stream within this stream */
- MIG_CMD_ENABLE_COLO, /* Enable COLO */
+ MIG_CMD_DEPRECATED_0, /* Prior to 10.2, used as MIG_CMD_ENABLE_COLO */
MIG_CMD_POSTCOPY_RESUME, /* resume postcopy on dest */
MIG_CMD_RECV_BITMAP, /* Request for recved bitmap on dst */
MIG_CMD_SWITCHOVER_START, /* Switchover start notification */
qemu_fflush(f);
}
-void qemu_savevm_send_colo_enable(QEMUFile *f)
-{
- trace_savevm_send_colo_enable();
- qemu_savevm_command_send(f, MIG_CMD_ENABLE_COLO, 0, NULL);
-}
-
void qemu_savevm_send_ping(QEMUFile *f, uint32_t value)
{
uint32_t buf;
return 0;
}
-static int loadvm_process_enable_colo(MigrationIncomingState *mis,
- Error **errp)
-{
- ERRP_GUARD();
- return migration_incoming_enable_colo(errp);
-}
-
static int loadvm_postcopy_handle_switchover_start(Error **errp)
{
SaveStateEntry *se;
return ret;
}
}
- break;
+ return 0;
case MIG_CMD_PING:
tmp32 = qemu_get_be32(f);
return -1;
}
migrate_send_rp_pong(mis, tmp32);
- break;
+ return 0;
case MIG_CMD_PACKAGED:
return loadvm_handle_cmd_packaged(mis, errp);
case MIG_CMD_RECV_BITMAP:
return loadvm_handle_recv_bitmap(mis, len, errp);
- case MIG_CMD_ENABLE_COLO:
- return loadvm_process_enable_colo(mis, errp);
-
case MIG_CMD_SWITCHOVER_START:
return loadvm_postcopy_handle_switchover_start(errp);
}
- return 0;
+ error_setg(errp, "MIG_CMD 0x%x deprecated (len 0x%x)", cmd, len);
+ return -EINVAL;
}
/*
uint16_t len,
uint64_t *start_list,
uint64_t *length_list);
-void qemu_savevm_send_colo_enable(QEMUFile *f);
int qemu_save_device_state(QEMUFile *f, Error **errp);
int qemu_loadvm_state(QEMUFile *f, Error **errp);
void qemu_loadvm_state_cleanup(MigrationIncomingState *mis);
savevm_send_postcopy_listen(void) ""
savevm_send_postcopy_run(void) ""
savevm_send_postcopy_resume(void) ""
-savevm_send_colo_enable(void) ""
savevm_send_recv_bitmap(char *name) "%s"
savevm_send_switchover_start(void) ""
savevm_state_setup(void) ""