LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Alan Stern <stern@rowland.harvard.edu>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: rjw@sisk.pl, <linux-kernel@vger.kernel.org>,
	<ncunningham@crca.org.au>, <linux-pm@lists.linux-foundation.org>
Subject: Re: [linux-pm] Freezer: Don't count threads waiting for frozen filesystems.
Date: Wed, 29 Oct 2008 12:17:30 -0400 (EDT)	[thread overview]
Message-ID: <Pine.LNX.4.44L0.0810291204380.2180-100000@iolanthe.rowland.org> (raw)
In-Reply-To: <E1KvDJp-00088f-2b@pomaz-ex.szeredi.hu>

On Wed, 29 Oct 2008, Miklos Szeredi wrote:

> 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?

I don't know.  Maybe it slipped through the cracks.  It wouldn't be 
surprising to find that async I/O can get messed up during a suspend.

> >  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).

I'll wriggle out of this by saying that "in the middle of I/O" means
the task has gotten a device into a state from which it can't
successfully be suspended.  An example would be if the system had sent
the device part of a command.  Even if you did manage to suspend the
device and resume it later, you wouldn't expect it to work right when
it received the second half of the command.

In general, drivers don't leave devices in this kind of intermediate
state for long.  A driver might sleep at such times, but it wouldn't 
return to userspace.

> 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.

True.  We're mostly talking about character device I/O.  There are a 
lot of character device drivers in the kernel.  :-)

> > > 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.

I tend to agree.  The problems posed by fuse are very difficult.  It is 
not at all obvious how to attack them.

Alan Stern


  reply	other threads:[~2008-10-29 16:17 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1224886068.6478.21.camel@nigel-laptop>
2008-10-26 20:01 ` Rafael J. Wysocki
2008-10-27 11:12   ` Miklos Szeredi
2008-10-27 11:20     ` Nigel Cunningham
2008-10-27 11:37       ` Rafael J. Wysocki
2008-10-27 11:40         ` Nigel Cunningham
2008-10-27 12:38           ` Miklos Szeredi
2008-10-27 20:59             ` Nigel Cunningham
2008-10-27 21:09               ` Miklos Szeredi
2008-10-27 22:13                 ` Nigel Cunningham
2008-10-28 20:25                   ` Miklos Szeredi
2008-10-28 21:29                     ` Nigel Cunningham
2008-10-28 21:51                       ` Miklos Szeredi
2008-10-28 22:00                         ` Rafael J. Wysocki
2008-10-28 22:02                           ` Miklos Szeredi
2008-10-28 22:21                             ` Rafael J. Wysocki
2008-10-28 23:21                               ` Miklos Szeredi
2008-10-28 23:59                                 ` Rafael J. Wysocki
2008-10-29  8:10                                   ` Miklos Szeredi
2008-10-29 13:51                                     ` Alan Stern
2008-10-29 14:50                                       ` Miklos Szeredi
2008-10-29 15:28                                         ` Alan Stern
2008-10-29 15:50                                           ` Miklos Szeredi
2008-10-29 16:17                                             ` Alan Stern [this message]
2008-10-29 16:10                                           ` Miklos Szeredi
2008-10-29 20:37                                             ` Alan Stern
2008-10-29 21:11                                               ` Rafael J. Wysocki
2008-10-29 21:45                                                 ` Nigel Cunningham
2008-10-29 22:07                                                   ` Rafael J. Wysocki
2008-10-29 23:53                                                     ` Miklos Szeredi
2008-11-09 13:44                                                       ` Pavel Machek
2008-10-29 23:48                                                   ` Miklos Szeredi
2008-10-30 13:04                                                     ` Nigel Cunningham
2008-10-30 13:56                                                       ` Alan Stern
2008-10-30 21:44                                                         ` Nigel Cunningham
2008-10-31  8:49                                                           ` Miklos Szeredi
2008-10-31  9:10                                                             ` Nigel Cunningham
2008-10-31  9:16                                                               ` Miklos Szeredi
2008-10-31 11:28                                                                 ` Nigel Cunningham
2008-10-31 12:44                                                                   ` Miklos Szeredi
2008-10-31 21:11                                                                     ` Nigel Cunningham
2008-10-29 23:43                                               ` Miklos Szeredi
2008-10-30 13:54                                                 ` Alan Stern
2008-10-30 14:39                                                   ` Miklos Szeredi
2008-10-30 17:07                                                     ` Alan Stern
2008-10-30 17:43                                                       ` Miklos Szeredi
2008-10-30 20:17                                                     ` Rafael J. Wysocki
2008-11-15 16:58                                                     ` Pavel Machek
2008-10-29 23:56                                               ` Matthew Garrett
2008-10-28 22:03                         ` Nigel Cunningham
2008-10-28 23:04                     ` Nigel Cunningham
2008-10-28 23:12                       ` Miklos Szeredi
2008-10-28 23:17                         ` Nigel Cunningham
2008-10-28 23:24                           ` Miklos Szeredi
2008-10-28 23:41                             ` Nigel Cunningham
2008-10-28 23:45                               ` Miklos Szeredi
2008-10-28 23:50                                 ` Miklos Szeredi
2008-10-28 23:58                                   ` Nigel Cunningham
2008-10-28 23:54                                 ` Nigel Cunningham
2008-10-27 11:37       ` Miklos Szeredi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.44L0.0810291204380.2180-100000@iolanthe.rowland.org \
    --to=stern@rowland.harvard.edu \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=miklos@szeredi.hu \
    --cc=ncunningham@crca.org.au \
    --cc=rjw@sisk.pl \
    --subject='Re: [linux-pm] Freezer: Don'\''t count threads waiting for frozen filesystems.' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).