linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jonas Meurer <jonas@freesources.org>
To: Pavel Machek <pavel@ucw.cz>
Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Len Brown <len.brown@intel.com>,
	Tim Dittler <tim.dittler@systemli.org>,
	Yannik Sembritzki <yannik@sembritzki.me>
Subject: Re: [PATCH 1/2] PM: Add a switch for disabling/enabling sync() before, suspend
Date: Mon, 16 Dec 2019 17:54:49 +0100	[thread overview]
Message-ID: <a46accd2-2e9e-1427-8757-2acf573648fa@freesources.org> (raw)
In-Reply-To: <20191214091309.GE16834@duo.ucw.cz>

Hello Pavel,

Pavel Machek:
> On Mon 2019-12-02 18:07:05, Jonas Meurer wrote:
>> The switch allows to enable or disable the final sync() from the suspend.c
>> Linux Kernel system suspend implementation. This is useful to avoid race
>> conditions if block devices have been suspended before. Be aware that you
>> have to take care of sync() yourself before suspending the system if you
>> disable it here.
>>
>> Signed-off-by: Jonas Meurer <jonas@freesources.org>
>> ---
>>  Documentation/ABI/testing/sysfs-power | 14 ++++++++++++
>>  include/linux/suspend.h               |  2 ++
>>  kernel/power/main.c                   | 33 +++++++++++++++++++++++++++
>>  kernel/power/suspend.c                |  2 +-
>>  4 files changed, 50 insertions(+), 1 deletion(-)
>>
>> diff --git a/Documentation/ABI/testing/sysfs-power b/Documentation/ABI/testing/sysfs-power
>> index 6f87b9dd384b..f164a364e89a 100644
>> --- a/Documentation/ABI/testing/sysfs-power
>> +++ b/Documentation/ABI/testing/sysfs-power
>> @@ -407,3 +407,17 @@ Contact:	Kalesh Singh <kaleshsingh96@gmail.com>
>>  Description:
>>  		The /sys/power/suspend_stats/last_failed_step file contains
>>  		the last failed step in the suspend/resume path.
>> +
>> +What:		/sys/power/sync_on_suspend
>> +Date:		October 2019
>> +Contact:	Jonas Meurer <jonas@freesources.org>
>> +Description:
>> +		This file controls the switch to enable or disable the final
>> +		sync() before system suspend. This is useful to avoid race
>> +		conditions if block devices have been suspended before. Be
>> +		aware that you have to take care of sync() yourself before
>> +		suspending the system if you disable it here.
>> +
>> +		Writing a "1" (default) to this file enables the sync() and
>> +		writing a "0" disables it. Reads from the file return the
>> +		current value.
> 
> This pushes kernel's responsibility on the user, and adds to the mess
> we already have there.

I hear you and I agree that the current situation is not the cleanest one.

> Just... don't do it? Move sync somewhere where it can be done?

Can you elaborate on that? What do you mean with "where it can be done"?

I don't agree that removing sync from the suspend function is a good
idea. In the majority of use cases, the kernel actually is *expected* to
sync before suspend in order to prevent potential data loss, no?

So it's rather about the special cases like embedded world (where
suspend is used a lot for very short periods) and our use case, where
block devices are suspended before system suspend, where we don't want
the kernel to do the sync.

Also, if the sync was removed from kernel suspend function, all
userspace tools that trigger system suspend would have to be changed in
order to do it themselves. It would be a rather intrusive and
backwards-incompatible change in my eyes.

Cheers
 jonas

  reply	other threads:[~2019-12-16 16:55 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-02 17:05 [PATCH 0/2] PM: Add a switch for disabling/enabling sync() before suspend Jonas Meurer
2019-12-02 17:07 ` [PATCH 1/2] PM: Add a switch for disabling/enabling sync() before, suspend Jonas Meurer
2019-12-14  9:13   ` Pavel Machek
2019-12-16 16:54     ` Jonas Meurer [this message]
2019-12-02 17:07 ` [PATCH 2/2] PM: CONFIG_SUSPEND_SKIP_SYNC sets default for, '/sys/power/sync_on_suspend' Jonas Meurer
2019-12-20  9:35   ` Rafael J. Wysocki
2019-12-20 16:06     ` Jonas Meurer
2019-12-11 15:59 ` [PATCH 0/2] PM: Add a switch for disabling/enabling sync() before suspend Jonas Meurer
2019-12-12 18:00   ` Rafael J. Wysocki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a46accd2-2e9e-1427-8757-2acf573648fa@freesources.org \
    --to=jonas@freesources.org \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=rjw@rjwysocki.net \
    --cc=tim.dittler@systemli.org \
    --cc=yannik@sembritzki.me \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).