Re: [PATCH] freezer: configure user space process frozen along with kernel threads

Alan Stern
2013-02-20T20:48:44Z

On Wed, 20 Feb 2013, Eric W. Biederman wrote:

> >> Why can't the fuse filesystem freeze when there are requests pending?
> >
> > It _can_ freeze (that is, the fuse daemon can). The problem is that
> > tasks _using_ the fuse filsystem can't if the daemon doesn't respond.
>
> Which is what I meant when I said that the fuse filesystem couldn't
> freeze.

Oh, okay. But it's no different from any other filesystem in that
respect. Processes generally can't be frozen while they are waiting
for filesystem I/O to complete. In many cases they can't receive
signals either (they are in an uninterruptible wait state).

> > These tasks are stuck in uninterruptible wait states deep in the
> > filesystem layer, probably holding important locks. They can't be
> > frozen until the outstanding requests complete.
>
> Why is it that processes that can be preempted can't be frozen?

There's a big difference between preemption and freezing: Preemption
is involuntary whereas freezing is voluntary. It's like the difference
between preemptive and cooperative multitasking.

Processes can be frozen only by making explicit checks, and they
mustn't be frozen while they are holding locks that would prevent other
processes from reaching one of those checks.

> At most I would suggest that processes be frozen in reverse priority
> order. Which unless there is a priority inversion should solve this
> problem without an additional proc file.

Do fuse daemons (and the processes they rely upon) run with elevated
priority?

Alan Stern