On 11/01/2016 11:31, Denis V. Lunev wrote: >>> >>> IMO, after a reset, main_loop_should_exit should actually transition >>> to VM_STATE_PRELAUNCH (*not* RUN_STATE_PAUSED) for *all* states except >>> RUN_STATE_INMIGRATE, RUN_STATE_SAVE_VM (which I think cannot happen >>> there) and (of course) RUN_STATE_RUNNING. Some changes will be required >>> to the transition table as well. >>> >>> This will fix similar bugs for other runstates as well, though most of >>> them probably cannot be triggered from libvirt. >> >> ok. Thank you for this input. I'll analyse this and come with >> corrected patch :) > > What would be correct procedure to handle this state? > > Setting VM_STATE_PRELAUNCH in main_loop_should_exit does not > move QEMU into VM_STATE_RUNNING and thus subsequent 'resume' > command is necessary. > > In this case the processing of 'reset' command should be different > in libvirt, i.e. libvirt should send two commands ('reset' and 'resume') > in this state.
Either that, or libvirt's client should send two of them. As far as QEMU is concerned, a paused VM remains paused after a reset, no matter why it was reset. I'm not sure what are the desired semantics for libvirt. Paolo