On 07/08/2015 07:06 PM, Juan Quintela wrote: > zhanghailiang <zhang.zhanghaili...@huawei.com> wrote: >> Hi, >> >> If testing migration with '-S' for qemu command line, (migrate >> directly without executing 'cont' command), >> qemu process in the destination will abort with the follow message: >> >> ERROR: invalid runstate transition: 'inmigrate' -> 'prelaunch' >> Aborted >> >> After the follow modification, it will be OK. Is this need to be fix ? > > but this is a "werid" case. basically it means that > > - we start on host A > - we start on host B (with -S) > - we migrate from A to B > - now we migrate from B to C without running at all on B > > Or I am missing something?
- we start on host A (with -S) - we start on host B - we migrate from A to B It is a werid case, but it is very useful for HA/FT, we use the -S option to avoid do block migration. Thanks Wen Congyang > > Later, Juan. > > >> >> --- a/vl.c >> +++ b/vl.c >> @@ -583,6 +583,7 @@ static const RunStateTransition >> runstate_transitions_def[] = { >> { RUN_STATE_INMIGRATE, RUN_STATE_WATCHDOG }, >> { RUN_STATE_INMIGRATE, RUN_STATE_GUEST_PANICKED }, >> + { RUN_STATE_INMIGRATE, RUN_STATE_PRELAUNCH }, >> >> { RUN_STATE_INTERNAL_ERROR, RUN_STATE_PAUSED }, >> { RUN_STATE_INTERNAL_ERROR, RUN_STATE_FINISH_MIGRATE }, >> >> >> Thanks, >> zhanghailiang >> >> On 2015/7/7 21:08, Juan Quintela wrote: >>> Next commit would allow to move from incoming migration to error happening >>> on source. >>> >>> Should we add more states to this transition? Luiz? >>> >>> Signed-off-by: Juan Quintela <quint...@redhat.com> >>> Reviewed-by: Dr. David Alan Gilbert <dgilb...@redhat.com> >>> --- >>> vl.c | 8 +++++++- >>> 1 file changed, 7 insertions(+), 1 deletion(-) >>> >>> diff --git a/vl.c b/vl.c >>> index fec7e93..19a8737 100644 >>> --- a/vl.c >>> +++ b/vl.c >>> @@ -573,8 +573,14 @@ static const RunStateTransition >>> runstate_transitions_def[] = { >>> { RUN_STATE_DEBUG, RUN_STATE_RUNNING }, >>> { RUN_STATE_DEBUG, RUN_STATE_FINISH_MIGRATE }, >>> >>> - { RUN_STATE_INMIGRATE, RUN_STATE_RUNNING }, >>> + { RUN_STATE_INMIGRATE, RUN_STATE_INTERNAL_ERROR }, >>> + { RUN_STATE_INMIGRATE, RUN_STATE_IO_ERROR }, >>> { RUN_STATE_INMIGRATE, RUN_STATE_PAUSED }, >>> + { RUN_STATE_INMIGRATE, RUN_STATE_RUNNING }, >>> + { RUN_STATE_INMIGRATE, RUN_STATE_SHUTDOWN }, >>> + { RUN_STATE_INMIGRATE, RUN_STATE_SUSPENDED }, >>> + { RUN_STATE_INMIGRATE, RUN_STATE_WATCHDOG }, >>> + { RUN_STATE_INMIGRATE, RUN_STATE_GUEST_PANICKED }, >>> >>> { RUN_STATE_INTERNAL_ERROR, RUN_STATE_PAUSED }, >>> { RUN_STATE_INTERNAL_ERROR, RUN_STATE_FINISH_MIGRATE }, >>> > > . >