PM: suspend: Add sysfs attribute to control the "sync on suspend" behavior
authorJonas Meurer <jonas@freesources.org>
Thu, 16 Jan 2020 11:53:54 +0000 (12:53 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 16 Jan 2020 20:47:03 +0000 (21:47 +0100)
commitc052bf82c6b00ca27aab0859addc4b3159dfd3a4
tree5d705708933306bc2c9600133255c8110869bd3a
parent5c0e9de06577ba7599b75f97a8bb8cc63f6cb2ad
PM: suspend: Add sysfs attribute to control the "sync on suspend" behavior

The sysfs attribute `/sys/power/sync_on_suspend` controls, whether or not
filesystems are synced by the kernel before system suspend.

Congruously, the behaviour of build-time switch CONFIG_SUSPEND_SKIP_SYNC
is slightly changed: It now defines the run-tim default for the new sysfs
attribute `/sys/power/sync_on_suspend`.

The run-time attribute is added because the existing corresponding
build-time Kconfig flag for (`CONFIG_SUSPEND_SKIP_SYNC`) is not flexible
enough. E.g. Linux distributions that provide pre-compiled kernels
usually want to stick with the default (sync filesystems before suspend)
but under special conditions this needs to be changed.

One example for such a special condition is user-space handling of
suspending block devices (e.g. using `cryptsetup luksSuspend` or `dmsetup
suspend`) before system suspend. The Kernel trying to sync filesystems
after the underlying block device already got suspended obviously leads
to dead-locks. Be aware that you have to take care of the filesystem sync
yourself before suspending the system in those scenarios.

Signed-off-by: Jonas Meurer <jonas@freesources.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Documentation/ABI/testing/sysfs-power
include/linux/suspend.h
kernel/power/Kconfig
kernel/power/main.c
kernel/power/suspend.c