Messages in this thread | | | Date | Wed, 20 Feb 2013 15:48:43 -0500 (EST) | From | Alan Stern <> | Subject | Re: [PATCH] freezer: configure user space process frozen along with kernel threads |
| |
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
| |