lkml.org 
[lkml]   [2008]   [Oct]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [linux-pm] Freezer: Don't count threads waiting for frozen filesystems.
From
Date
On Wed, 29 Oct 2008, Alan Stern wrote:
> On Wed, 29 Oct 2008, Miklos Szeredi wrote:
> > I did a random sampling of ->suspend() callbacks, and they don't seem
> > to be taking mutexes. Does that happen at all?
>
> It does, particularly among drivers that do runtime PM, which is
> becoming more and more important.
>
> Besides, suspend has to synchronize with I/O somehow. Right now that
> is handled by making suspend wait until no tasks are doing I/O (because
> they are all frozen).

What about async I/O?

> If you allow tasks to be frozen at more or less
> arbitrary times, while holding arbitrary locks, then you may end up
> freezing a task that's in the middle of I/O. That should certainly
> block the suspend (not to mention messing up the I/O operation).

What is the middle of I/O? Depending the type of I/O it could be
messed up regardless of whether tasks happen to be in userspace or not
(e.g. printing).

And some types of I/O are already mostly decoupled from userspace
(file I/O, networking), so the userspace freezing shoudln't make any
difference.

> > Did anybody ever try modifying the freezer for suspend (not
> > hibernate), so that it allows tasks not in running state to freeze?
> > If not, I think that's an experiment worth doing.
>
> What happens if the reason the task isn't running is because it's
> waiting for I/O to complete? I just don't think this can be made to
> work.

Don't know. I've never written a driver, and I'm not familiar with
runtime PM, etc. So I can't come up with a detailed design for
solving the freezer issues there.

But I do think that the solution does not lie in "fixing" the VFS.

Miklos


\
 
 \ /
  Last update: 2008-10-29 16:53    [W:0.076 / U:0.428 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site