[PATCH] PM / suspend: move userspace freeze before disk sync
Sean Nyekjaer
sean at geanix.com
Fri Sep 3 01:17:51 PDT 2021
On Thu, Sep 02, 2021 at 06:28:14PM +0200, Rafael J. Wysocki wrote:
> On Wed, Sep 1, 2021 at 10:35 AM Sean Nyekjaer <sean at geanix.com> wrote:
> >
> > This fixes an issue where data remains unwritten before suspend.
>
> Well, it doesn't make the issue go away, it just hides it for you and
> it may very well expose it for someone else.
OK
>
> In particular, note that you can compile the kernel with
> CONFIG_SUSPEND_SKIP_SYNC set which makes it not sync at all during
> system-wide suspend and this is a valid case expected to work. It
> looks like this case doesn't work for you.
>
> > UBI tried to write data, before the mtd device had been unsuspended.
>
> Well, that's the real problem and it can happen regardless of whether
> or not this patch is there.
How to fix it then?
We can't live with devices that bricks on unsuspend :/
/Sean
>
> > Seen on an iMX6ULL board fitted with rawnand flash.
> >
> > Before:
> > PM: suspend entry (deep)
> > Filesystems sync: 0.088 seconds
> > Freezing user space processes ... (elapsed 0.000 seconds) done.
> > OOM killer disabled.
> > Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
> > printk: Suspending console(s) (use no_console_suspend to debug)
> > PM: suspend devices took 0.030 seconds
> > Disabling non-boot CPUs ...
> > ubi0 error: ubi_io_write: error -16 while writing 4096 bytes to PEB 1762:94208, written 0 bytes
> >
> > After:
> > PM: suspend entry (deep)
> > Freezing user space processes ... (elapsed 0.001 seconds) done.
> > OOM killer disabled.
> > Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
> > Filesystems sync: 0.060 seconds
> > printk: Suspending console(s) (use no_console_suspend to debug)
> > PM: suspend devices took 0.040 seconds
> > Disabling non-boot CPUs ...
> > PM: resume devices took 0.100 seconds
> >
> > Signed-off-by: Sean Nyekjaer <sean at geanix.com>
More information about the linux-mtd
mailing list