summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorZhang Chen <chen.zhang@intel.com>2022-04-01 11:46:59 +0800
committerJason Wang <jasowang@redhat.com>2022-07-20 16:58:08 +0800
commit669846c530dc4ab4afa0d2ad827fec651cb7510c (patch)
treed9fc1c1c242d251745ddab098e2c0a21d4eb0156
parent1576dbb5bbc49344c606e969ec749be70c0fd94e (diff)
downloadfocaccia-qemu-669846c530dc4ab4afa0d2ad827fec651cb7510c.tar.gz
focaccia-qemu-669846c530dc4ab4afa0d2ad827fec651cb7510c.zip
softmmu/runstate.c: add RunStateTransition support form COLO to PRELAUNCH
If the checkpoint occurs when the guest finishes restarting
but has not started running, the runstate_set() may reject
the transition from COLO to PRELAUNCH with the crash log:

{"timestamp": {"seconds": 1593484591, "microseconds": 26605},\
"event": "RESET", "data": {"guest": true, "reason": "guest-reset"}}
qemu-system-x86_64: invalid runstate transition: 'colo' -> 'prelaunch'

Long-term testing says that it's pretty safe.

Signed-off-by: Like Xu <like.xu@linux.intel.com>
Signed-off-by: Zhang Chen <chen.zhang@intel.com>
Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
-rw-r--r--softmmu/runstate.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/softmmu/runstate.c b/softmmu/runstate.c
index fac7b63259..168e1b78a0 100644
--- a/softmmu/runstate.c
+++ b/softmmu/runstate.c
@@ -126,6 +126,7 @@ static const RunStateTransition runstate_transitions_def[] = {
     { RUN_STATE_RESTORE_VM, RUN_STATE_PRELAUNCH },
 
     { RUN_STATE_COLO, RUN_STATE_RUNNING },
+    { RUN_STATE_COLO, RUN_STATE_PRELAUNCH },
     { RUN_STATE_COLO, RUN_STATE_SHUTDOWN},
 
     { RUN_STATE_RUNNING, RUN_STATE_DEBUG },