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

Rafael J. Wysocki
2007-07-05T11:33:37Z

On Thursday, 5 July 2007 12:14, Miklos Szeredi wrote:
> > > > > And teach VFS to block suspension, while waiting on a mutex held by
> > > > > another process performing a fuse operation.
> > > > >
> > > > > I can already hear the beautiful praise from Al Viro at the sight of
> > > > > that ;)
> > > >
> > > > There is that.
> > > >
> > > > OK, bite the bullet. Tasks involved in fuse are special. Give them a flag
> > > > and teach the freezer to put them on ice only after all other task are
> > > > frozen. In a way they are kernel, there's no use denying that.
> > >
> > > And flag every other process, that the flagged process is
> > > communicating with? How are you proposing to do that?
> > >
> > > Quoting Paul:
> > >
> > > "1. The freezer cannot be guaranteed deadlock-free without constructing
> > > a dependency graph between tasks (both user and kernel), which is
> > > virtually impossible since the dependencies are not externally
> > > observable."

This statement is ganarally false.

There is the limitation in the freezer that it cannot handle uninterruptible
tasks and that's all.

Now, this is not usual for user space tasks to make other user space
tasks become uninterruptible. I'd say this is a little strange.

> > A deadlock requires that the circular wait is uninterruptible. Normal IPC
> > isn't.
> >
> > What are you doing in the userland portions of fuse? Some kind of IPC
> > with other tasks?
>
> Anything, writing to a file, writing to shared memory, sending things
> over the network. There's no limit to what a filesystem daemon may
> do. It's a perfectly ordinary unprivileged userspace process. And
> this is a feature not a bug.
>
> > There is a limit to which you can push kernel functionality into
> > user space.
>
> Limiting what a userspace filesystem can do would defeat the whole
> purpose of the bloody thing. This is not negotiable ;)

Which doesn't change the fact that FUSE _is_ special, because it adds
dependencies between processed that were not present before.

Greetings,
Rafael

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