Thread (65 messages) 65 messages, 14 authors, 2015-08-04

Re: [PATCH 1/1] suspend: delete sys_sync()

From: Len Brown <lenb@kernel.org>
Date: 2015-05-11 20:34:35
Also in: lkml

On Sat, May 9, 2015 at 4:25 PM, Henrique de Moraes Holschuh
[off-list ref] wrote:
On Sat, 09 May 2015, Alan Stern wrote:
quoted
On Fri, 8 May 2015, Rafael J. Wysocki wrote:
quoted
My current view on that is that whether or not to do a sync() before suspending
ultimately is a policy decision and should belong to user space as such (modulo
the autosleep situation when user space may not know when the suspend is going
to happen).

Moreover, user space is free to do as many sync()s before suspending as it
wants to and the question here is whether or not the *kernel* should sync()
in the suspend code path.

Since we pretty much can demonstrate that having just one sync() in there is
not sufficient in general, should we put two of them in there?  Or just
remove the existing one and leave it to user space entirely?
I don't know about the advantages of one sync over two.  But how about
adding a "syncs_before_suspend" (or just "syncs") sysfs attribute that
takes a small numeric value?  The default can be 0, and the user could
set it to 1 or 2 (or higher).
IMO it would be much safer to both have that knob, and to set it to keep the
current behavior as the default.  Userspace will adapt and change that knob
to whatever is sufficient based on what it does before signaling the kernel
to suspend.

A regression in sync-before-suspend is sure to cause data loss episodes,
after all.  And, as far as bikeshedding goes, IMHO syncs_before_suspend is
self-explanatory, which would be a very good reason to use it instead of the
shorter requires-you-to-know-what-it-is-about "syncs".
When I first thought about this, I had a similar view:
https://lkml.org/lkml/2014/1/23/45

But upon reflection, I do not believe that the kernel is adding value here,
instead it is imposing a policy, and that policy decision is sometimes
prohibitively expensive.
User-space can do this for itself (and in the case of desktop distros,
already does),
and so the kernel should butt-out.

thanks,
Len Brown, Intel Open Source Technology Center
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help