Il 21/08/2013 14:42, Laszlo Ersek ha scritto:
(*) Hm I think I understand why. main_loop_should_exit(), when a
reset
was requested *and* runstate_needs_reset() evaluated to true, used to
set the runstate to PAUSED -- I guess temporarily.
Yes, this is the code that does the PANICKED -> PAUSED transition:
if (runstate_needs_reset()) {
runstate_set(RUN_STATE_PAUSED);
}
This is to move the system out of a runstate that needs_reset(), and
make the subsequent "cont" work instead of hitting this:
if (runstate_needs_reset()) {
error_set(errp, QERR_RESET_REQUIRED);
return;
}
Paolo
Since PANICKED was included in runstate_needs_reset(), this generic
code
could request a transition from PANICKED to PAUSED (**). As PANICKED is
being removed from runstate_needs_reset(), the PANICKED->PAUSED
transition is not required any longer.
(**) I don't know why the generic code moves to PAUSED temporarily (from
INTERNAL_ERROR and SHUTDOWN), but I'll just accept that as status quo.