On Thu, 19 Dec 2019 13:50:19 +0300 Nikolay Shirokovskiy wrote: > If we use fake reboot then domain goes thru running->shutdown->running > state changes with shutdown state only for short period of time. At > least this is implementation details leaking into API. And also there is > one real case when this is not convinient. I'm doing a backup with the > help of temporary block snapshot (with the help of qemu's API which is > used in the newly created libvirt's backup API). If guest is shutdowned > I want to continue to backup so I don't kill the process and domain is > in shutdown state. Later when backup is finished I want to destroy qemu > process. So I check if it is in shutdowned state and destroy it if it > is. Now if instead of shutdown domain got fake reboot then I can destroy > process in the middle of fake reboot process. > > After shutdown event we also get stop event and now as domain state is > running it will be transitioned to paused state and back to running > later. Though this is not critical for the described case I guess it is > better not to leak these details to user too. So let's leave domain in > running state on stop event if fake reboot is in process. > > Reconnection code handles this patch without modification. It detects > that qemu is not running due to shutdown and then calls qemuProcessShutdownOrReboot > which reboots as fake reboot flag is set. > > Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@xxxxxxxxxxxxx> Question regarding this change: in the on-line documentation for virDomainReboot(), it states: Due to implementation limitations in some drivers (the qemu driver, for instance) it is not advised to migrate or save a guest that is rebooting as a result of this API. Migrating such a guest can lead to a plain shutdown on the destination. Is this still the case? In any event, how does one know when the reboot has finished (assuming the VM reacted to it)? TIA, -d