提交 c69adea4 编写于 作者: A Anthony PERARD 提交者: Stefano Stabellini

migration: Fix global state with Xen.

When doing migration via the QMP command xen_save_devices_state, the
current runstate is not store into the global state section. Also the
current runstate is not the one we want on the receiver side.

During migration, the Xen toolstack paused QEMU before save the devices
state. Also, the toolstack expect QEMU to autostart when the migration is
finished.
So this patch store "running" as it's current runstate.
Signed-off-by: NAnthony PERARD <anthony.perard@citrix.com>
Signed-off-by: NStefano Stabellini <stefano.stabellini@eu.citrix.com>
上级 f60c8715
......@@ -203,4 +203,5 @@ void register_global_state(void);
void global_state_set_optional(void);
void savevm_skip_configuration(void);
int global_state_store(void);
void global_state_store_running(void);
#endif
......@@ -122,6 +122,13 @@ int global_state_store(void)
return 0;
}
void global_state_store_running(void)
{
const char *state = RunState_lookup[RUN_STATE_RUNNING];
strncpy((char *)global_state.runstate,
state, sizeof(global_state.runstate));
}
static bool global_state_received(void)
{
return global_state.received;
......
......@@ -1394,6 +1394,7 @@ void qmp_xen_save_devices_state(const char *filename, Error **errp)
saved_vm_running = runstate_is_running();
vm_stop(RUN_STATE_SAVE_VM);
global_state_store_running();
f = qemu_fopen(filename, "wb");
if (!f) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册