Re: Re: [PATCH] Remove process freezer from suspend to RAM pathway

Rafael J. Wysocki
2007-07-03T21:20:19Z

On Tuesday, 3 July 2007 22:19, Miklos Szeredi wrote:
> > > Well, but you did remove sys_sync() from the freezer, which is
> > > and must be called in the hibernate path.
> >
> > That's not really true. We _want_ to call sys_sync() in both the
> > hibernate and suspend paths (in case the batteries run down), to help
> > avoid filesystem problems if something goes wrong with the resume. But
> > it isn't a hard requirement.
> >
> > > > I'm not sure why this can't be made atomic, but assuming, that it
> > > > can't, fuse should still not need to be implicated. If it is, that's
> > > > an indication about something wrong in the suspend procedure.
> > >
> > > Nope, something's wrong in fuse. You must be able to deal with sync
> > > until every task is frozen.
> >
> > That's ridiculous. FUSE itself runs partially as a user task. How can
> > you expect it to carry out a sync or anything else when it is frozen?
> >
> > I suppose you could "deal" with it by having the kernel portion return
> > an error if the userspace part is frozen. If the hibernate/suspend
> > code bothered to check the return value, it would immediately abort
> > the suspend.

Er, do_sync() doesn't return a result.

> I strongly believe, that we don't want to deal with it. If we want to
> call sync(), do it while the system is fully operational. It's a best
> effort thing anyway, and you can loose data in other ways if resume
> fails.

The requirement of syncing when the system (including the user space) is fully
operational is FUSE-specific. Thus we'd rather like to sync FUSE filesystems
before freezing the user space and freeze the other filesystems after freezing
the user space.

Greetings,
Rafael

--
"Premature optimization is the root of all evil." - Donald Knuth