All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Pavel Machek <pavel@ucw.cz>
Cc: Andrew Morton <akpm@osdl.org>, Eric Sandeen <sandeen@redhat.com>,
	Nigel Cunningham <nigel@suspend2.net>,
	David Chinner <dgc@sgi.com>,
	linux-kernel@vger.kernel.org, dm-devel@redhat.com,
	Srinivasa DS <srinivasa@in.ibm.com>,
	Alasdair G Kergon <agk@redhat.com>
Subject: Re: [PATCH 2.6.19 5/5] fs: freeze_bdev with semaphore not mutex
Date: Fri, 10 Nov 2006 13:03:32 +0100	[thread overview]
Message-ID: <200611101303.33685.rjw@sisk.pl> (raw)
In-Reply-To: <20061109233258.GH2616@elf.ucw.cz>

On Friday, 10 November 2006 00:32, Pavel Machek wrote:
> Hi!
> 
> > On Fri, Nov 10, 2006 at 12:11:46AM +0100, Pavel Machek wrote:
> > > ? Not sure if I quite understand, but if dm breaks sync... something
> > > is teribly wrong with dm. And we do simple sys_sync()... so I do not
> > > think we have a problem.
> >  
> > If you want to handle arbitrary kernel state, you might have a device-mapper
> > device somewhere lower down the stack of devices that is queueing any I/O
> > that reaches it.  So anything waiting for I/O completion will wait until 
> > the dm process that suspended that device has finished whatever it is doing
> > - and that might be a quick thing carried out by a userspace lvm tool, or
> > a long thing carried out by an administrator using dmsetup.
> > 
> > I'm guessing you need a way of detecting such state lower down the stack
> > then optionally either aborting the operation telling the user it can't be
> > done at present; waiting for however long it takes (perhaps for ever if
> > the admin disappeared); or more probably skipping those devices on a 
> > 'best endeavours' basis.
> 
> Okay, so you claim that sys_sync can stall, waiting for administator?
> 
> In such case we can simply do one sys_sync() before we start freezing
> userspace... or just more the only sys_sync() there. That way, admin
> has chance to unlock his system.

Well, this is a different story.

My point is that if we call sys_sync() _anyway_ before calling
freeze_filesystems(), then freeze_filesystems() is _safe_ (either the
sys_sync() blocks, or it doesn't in which case freeze_filesystems() won't
block either).

This means, however, that we can leave the patch as is (well, with the minor
fix I have already posted), for now, because it doesn't make things worse a
bit, but:
(a) it prevents xfs from being corrupted and
(b) it prevents journaling filesystems in general from replaying journals
after a failing resume.

Still, there is a problem with the possibility of potential lock-up - either
with the bdevs-freezing patch or without it - due to a suspended dm device
down the stack and solving that is a _separate_ issue.

Now if we use the userland suspend, there's no problem at all, I think,
because s2disk calls sync() before it goes to suspend_system(), so the
admin will have a chance to unclock the system and everything is fine and
dandy (although it should be documented somewhere, IMHO).

However, if the built-in swsusp is used, then well ... <looks> ... we can put
a call to sys_sync() before prepare_processes() in pm_suspend_disk().

Greetings,
Rafael


-- 
You never change things by fighting the existing reality.
		R. Buckminster Fuller

WARNING: multiple messages have this Message-ID (diff)
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Pavel Machek <pavel@ucw.cz>
Cc: Alasdair G Kergon <agk@redhat.com>,
	Eric Sandeen <sandeen@redhat.com>, Andrew Morton <akpm@osdl.org>,
	linux-kernel@vger.kernel.org, dm-devel@redhat.com,
	Srinivasa DS <srinivasa@in.ibm.com>,
	Nigel Cunningham <nigel@suspend2.net>,
	David Chinner <dgc@sgi.com>
Subject: Re: [PATCH 2.6.19 5/5] fs: freeze_bdev with semaphore not mutex
Date: Fri, 10 Nov 2006 13:03:32 +0100	[thread overview]
Message-ID: <200611101303.33685.rjw@sisk.pl> (raw)
In-Reply-To: <20061109233258.GH2616@elf.ucw.cz>

On Friday, 10 November 2006 00:32, Pavel Machek wrote:
> Hi!
> 
> > On Fri, Nov 10, 2006 at 12:11:46AM +0100, Pavel Machek wrote:
> > > ? Not sure if I quite understand, but if dm breaks sync... something
> > > is teribly wrong with dm. And we do simple sys_sync()... so I do not
> > > think we have a problem.
> >  
> > If you want to handle arbitrary kernel state, you might have a device-mapper
> > device somewhere lower down the stack of devices that is queueing any I/O
> > that reaches it.  So anything waiting for I/O completion will wait until 
> > the dm process that suspended that device has finished whatever it is doing
> > - and that might be a quick thing carried out by a userspace lvm tool, or
> > a long thing carried out by an administrator using dmsetup.
> > 
> > I'm guessing you need a way of detecting such state lower down the stack
> > then optionally either aborting the operation telling the user it can't be
> > done at present; waiting for however long it takes (perhaps for ever if
> > the admin disappeared); or more probably skipping those devices on a 
> > 'best endeavours' basis.
> 
> Okay, so you claim that sys_sync can stall, waiting for administator?
> 
> In such case we can simply do one sys_sync() before we start freezing
> userspace... or just more the only sys_sync() there. That way, admin
> has chance to unlock his system.

Well, this is a different story.

My point is that if we call sys_sync() _anyway_ before calling
freeze_filesystems(), then freeze_filesystems() is _safe_ (either the
sys_sync() blocks, or it doesn't in which case freeze_filesystems() won't
block either).

This means, however, that we can leave the patch as is (well, with the minor
fix I have already posted), for now, because it doesn't make things worse a
bit, but:
(a) it prevents xfs from being corrupted and
(b) it prevents journaling filesystems in general from replaying journals
after a failing resume.

Still, there is a problem with the possibility of potential lock-up - either
with the bdevs-freezing patch or without it - due to a suspended dm device
down the stack and solving that is a _separate_ issue.

Now if we use the userland suspend, there's no problem at all, I think,
because s2disk calls sync() before it goes to suspend_system(), so the
admin will have a chance to unclock the system and everything is fine and
dandy (although it should be documented somewhere, IMHO).

However, if the built-in swsusp is used, then well ... <looks> ... we can put
a call to sys_sync() before prepare_processes() in pm_suspend_disk().

Greetings,
Rafael


-- 
You never change things by fighting the existing reality.
		R. Buckminster Fuller

  reply	other threads:[~2006-11-10 12:03 UTC|newest]

Thread overview: 110+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-07 18:34 [PATCH 2.6.19 5/5] fs: freeze_bdev with semaphore not mutex Alasdair G Kergon
2006-11-07 18:34 ` Alasdair G Kergon
2006-11-07 20:18 ` Mike Snitzer
2006-11-07 20:18   ` [dm-devel] " Mike Snitzer
2006-11-07 20:22   ` Eric Sandeen
2006-11-07 23:34   ` Alasdair G Kergon
2006-11-07 23:34     ` [dm-devel] " Alasdair G Kergon
2006-11-07 20:28 ` Andrew Morton
2006-11-07 20:28   ` Andrew Morton
2006-11-07 22:45   ` Eric Sandeen
2006-11-07 23:00     ` Andrew Morton
2006-11-07 23:00       ` Andrew Morton
2006-11-08  9:54       ` Arjan van de Ven
2006-11-08  9:54         ` Arjan van de Ven
2007-01-12  6:23       ` Srinivasa Ds
2007-01-12  6:23         ` Srinivasa Ds
2007-01-12 10:16       ` Srinivasa Ds
2006-11-07 23:05     ` Rafael J. Wysocki
2006-11-07 23:18       ` Eric Sandeen
2006-11-07 23:42         ` Rafael J. Wysocki
2006-11-08  0:01           ` Alasdair G Kergon
2006-11-08  0:01             ` Alasdair G Kergon
2006-11-08  8:27             ` David Chinner
2006-11-08 14:25               ` Alasdair G Kergon
2006-11-08 14:25                 ` Alasdair G Kergon
2006-11-08 14:43                 ` Rafael J. Wysocki
2006-11-08 15:25                   ` Alasdair G Kergon
2006-11-08 15:25                     ` Alasdair G Kergon
2006-11-08 23:06                     ` Rafael J. Wysocki
2006-11-07 23:49       ` Alasdair G Kergon
2006-11-07 23:49         ` Alasdair G Kergon
2006-11-08  0:00         ` Rafael J. Wysocki
2006-11-08  3:33           ` David Chinner
2006-11-08  2:30         ` Alasdair G Kergon
2006-11-08  2:30           ` Alasdair G Kergon
2006-11-08 12:10           ` Rafael J. Wysocki
2006-11-08 18:09             ` Pavel Machek
2006-11-09 15:52               ` Rafael J. Wysocki
2006-11-09 16:00                 ` Pavel Machek
2006-11-09 19:59                   ` Rafael J. Wysocki
2006-11-09 21:17                     ` Pavel Machek
2006-11-09 21:18                       ` Rafael J. Wysocki
2006-11-09 21:41                         ` Pavel Machek
2006-11-09 22:21                           ` Rafael J. Wysocki
2006-11-09 23:11                             ` Pavel Machek
2006-11-09 23:24                               ` Alasdair G Kergon
2006-11-09 23:24                                 ` Alasdair G Kergon
2006-11-09 23:32                                 ` Pavel Machek
2006-11-10 12:03                                   ` Rafael J. Wysocki [this message]
2006-11-10 12:03                                     ` Rafael J. Wysocki
2006-11-12 18:43                                     ` Pavel Machek
2006-11-12 21:53                                       ` Rafael J. Wysocki
2006-11-12 21:53                                         ` Rafael J. Wysocki
2006-11-12 23:30                                       ` David Chinner
2006-11-12 23:30                                         ` David Chinner
2006-11-13 16:11                                         ` Rafael J. Wysocki
2006-11-13 16:11                                           ` Rafael J. Wysocki
2006-11-15 18:50                                         ` Pavel Machek
2006-11-15 18:50                                           ` Pavel Machek
2006-11-15 19:56                                           ` Rafael J. Wysocki
2006-11-15 19:56                                             ` Rafael J. Wysocki
2006-11-15 20:00                                             ` Rafael J. Wysocki
2006-11-15 20:23                                               ` Pavel Machek
2006-11-15 21:58                                                 ` Rafael J. Wysocki
2006-11-15 21:58                                                   ` Rafael J. Wysocki
2006-11-15 22:49                                                   ` Pavel Machek
2006-11-15 22:49                                                     ` Pavel Machek
2006-11-16 23:20                                                   ` David Chinner
2006-11-16 23:20                                                     ` David Chinner
2006-11-16 23:38                                                     ` Pavel Machek
2006-11-16 23:38                                                       ` Pavel Machek
2006-11-13  7:35                                       ` Stefan Seyfried
2006-11-10  0:57                             ` David Chinner
2006-11-10  0:57                               ` David Chinner
2006-11-10 10:39                               ` Pavel Machek
2006-11-10 10:39                                 ` Pavel Machek
2006-11-12 22:30                                 ` David Chinner
2006-11-12 22:30                                   ` David Chinner
2006-11-12 22:43                                   ` Rafael J. Wysocki
2006-11-12 22:43                                     ` Rafael J. Wysocki
2006-11-13  5:43                                     ` David Chinner
2006-11-13  5:43                                       ` David Chinner
2006-11-13 16:22                                       ` Rafael J. Wysocki
2006-11-13 16:22                                         ` Rafael J. Wysocki
2006-11-14  0:10                                         ` David Chinner
2006-11-14  0:10                                           ` David Chinner
2006-11-16 23:23                                     ` David Chinner
2006-11-16 23:23                                       ` David Chinner
2006-11-16 23:40                                       ` Pavel Machek
2006-11-16 23:40                                         ` Pavel Machek
2006-11-17  1:40                                         ` David Chinner
2006-11-17  1:40                                           ` David Chinner
2006-11-17 15:13                                           ` Pavel Machek
2006-11-17 15:13                                             ` Pavel Machek
2006-11-10  0:54                       ` David Chinner
2006-11-10  0:54                         ` David Chinner
2006-11-10 10:24                       ` Alan Cox
2006-11-10 10:24                         ` Alan Cox
2006-11-10 10:36                         ` Pavel Machek
2006-11-10 10:36                           ` Pavel Machek
2006-11-10  0:33                   ` David Chinner
2006-11-10  0:33                     ` David Chinner
2006-11-10 10:38                     ` Pavel Machek
2006-11-10 10:38                       ` Pavel Machek
2006-11-08 20:48             ` Nigel Cunningham
2006-11-08 21:08               ` Rafael J. Wysocki
2006-11-07 23:23   ` Alasdair G Kergon
2006-11-07 23:23     ` Alasdair G Kergon
2006-11-07 23:39   ` Ingo Molnar
2006-11-07 23:39     ` Ingo Molnar

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=200611101303.33685.rjw@sisk.pl \
    --to=rjw@sisk.pl \
    --cc=agk@redhat.com \
    --cc=akpm@osdl.org \
    --cc=dgc@sgi.com \
    --cc=dm-devel@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nigel@suspend2.net \
    --cc=pavel@ucw.cz \
    --cc=sandeen@redhat.com \
    --cc=srinivasa@in.ibm.com \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.