> From: Dexuan Cui > Sent: Sunday, January 12, 2020 10:29 PM > > Hi, > This is an updated version of the v1 patchset: > https://lkml.org/lkml/2019/9/11/861 > > Patch #1 is a new patch that makes the daemons more robust. > > Patch #2 is the same as v1. > > Patch #3 sends the host-initiated hibernation request to the user space via > udev. > (v1 used call_usermodehelper() and "/sbin/hyperv-hibernate".) > > Patch #4 handles fcopy/vss specially to avoid possible inconsistent states. > > Please review. > > Thanks! > > Dexuan Cui (4): > Patch #1: Tools: hv: Reopen the devices if read() or write() returns errors > Patch #2: hv_utils: Support host-initiated restart request > Patch #3: hv_utils: Support host-initiated hibernation request > Patch #4: hv_utils: Add the support of hibernation Hi Vitaly, I forgot to mention this for patch #4: IMO we don't need to add a new HVUTIL_SUSPENDED state to the hvutil state machine, because: When we reach util_suspend(), all the userspace processes have been frozen: see kernel/power/hibernate.c: hibernate() -> freeze_processes() -> try_to_freeze_tasks(true) -> freeze_task() -> fake_signal_wake_up(). When try_to_freeze_tasks(true) returns 0, all the user-space processes must be frozen in do_signal() -> get_signal() -> try_to_freeze() -> ... -> __refrigerator(). hibernate () -> hibernation_snapshot () -> dpm_suspend() -> ... -> util_suspend() only runs after hibernate() -> freeze_processes(), so I'm pretty sure we have no race condition with the user space daemon. util_suspend() -> srv->util_pre_suspend() disables the tasklet and cancels any pening work items, so there is no race in the kernel space, either. Thanks, -- Dexuan