linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Johannes Weiner <hannes@cmpxchg.org>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Alan Jenkins <alan-jenkins@tuffmail.co.uk>,
	Heiko Carstens <heiko.carstens@de.ibm.com>,
	linux-kernel@vger.kernel.org,
	Hans-Joachim Picht <hans@linux.vnet.ibm.com>,
	pm list <linux-pm@lists.linux-foundation.org>,
	Arnd Schneider <arnd@de.ibm.com>,
	linux-fsdevel@vger.kernel.org
Subject: Re: PM/hibernate swapfile regression
Date: Tue, 21 Jul 2009 23:46:57 +0200	[thread overview]
Message-ID: <20090721214657.GA27605@cmpxchg.org> (raw)
In-Reply-To: <200907212257.21878.rjw@sisk.pl>

On Tue, Jul 21, 2009 at 10:57:21PM +0200, Rafael J. Wysocki wrote:
> On Tuesday 21 July 2009, Alan Jenkins wrote:
> > From 643014ec079610a8b01dfd78c6949c1e8727195b Mon Sep 17 00:00:00 2001
> > From: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
> > Date: Tue, 21 Jul 2009 10:17:30 +0100
> > Subject: [PATCH] PM/hibernate: replace bdget call with bdcopy (simple atomic_inc of i_count)
> > 
> > Create bdcopy().  This function copies an existing reference to a
> > block_device.  It is safe to call from any context.
> > 
> > Hibernation code wishes to copy a reference to the active swap device.
> > Right now it calls bdget() under a spinlock, but this is wrong because
> > bdget() can sleep.  It doesn't need a full bdget() because we already
> > hold a reference to active swap devices (and the spinlock protects
> > against swapoff).
> > 
> > Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
> > CC: linux-fsdevel@vger.kernel.org
> > ---
> >  fs/block_dev.c     |    8 ++++++++
> >  include/linux/fs.h |    1 +
> >  mm/swapfile.c      |    4 ++--
> >  3 files changed, 11 insertions(+), 2 deletions(-)
> > 
> > diff --git a/fs/block_dev.c b/fs/block_dev.c
> > index 3a6d4fb..0b04974 100644
> > --- a/fs/block_dev.c
> > +++ b/fs/block_dev.c
> > @@ -564,6 +564,14 @@ struct block_device *bdget(dev_t dev)
> >  
> >  EXPORT_SYMBOL(bdget);
> >  
> > +struct block_device *bdcopy(struct block_device *bdev)
> > +{
> > +	atomic_inc(&bdev->bd_inode->i_count);
> > +	return bdev;
> > +}
> 
> Hmm.  If you defined bdcopy() as static inline directly in mm/swapfile.c,
> the patch would be slightly simpler.

Please don't do that.

This helper seems to be generic enough to live next to the rest of the
bd interface, don't you think?  swapfile.c is a mess already...

	Hannes

  reply	other threads:[~2009-07-21 21:48 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20090714135453.GA26976@osiris.boeblingen.de.ibm.com>
     [not found] ` <200907141821.06101.rjw@sisk.pl>
     [not found]   ` <4A6077DE.6060202@tuffmail.co.uk>
     [not found]     ` <20090720132456.GA29023@osiris.boeblingen.de.ibm.com>
2009-07-21 10:50       ` PM/hibernate swapfile regression Alan Jenkins
2009-07-21 13:41         ` Rafael J. Wysocki
2009-07-21 20:57         ` Rafael J. Wysocki
2009-07-21 21:46           ` Johannes Weiner [this message]
2009-07-21 21:55         ` Christoph Hellwig
2009-07-25 21:58           ` Rafael J. Wysocki
2009-07-27  5:12             ` Christoph Hellwig

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=20090721214657.GA27605@cmpxchg.org \
    --to=hannes@cmpxchg.org \
    --cc=alan-jenkins@tuffmail.co.uk \
    --cc=arnd@de.ibm.com \
    --cc=hans@linux.vnet.ibm.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=rjw@sisk.pl \
    /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 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).