PM / Hibernate: Replace bdget call with simple atomic_inc of i_count
authorAlan Jenkins <alan-jenkins@tuffmail.co.uk>
Wed, 29 Jul 2009 19:07:55 +0000 (21:07 +0200)
committerRafael J. Wysocki <rjw@sisk.pl>
Wed, 29 Jul 2009 19:07:55 +0000 (21:07 +0200)
commitdddac6a7b445de95515f64fdf82fe5dc36c02f26
tree39651610292d6b0c17f210f253a0dd16b022727d
parentec79be26875f6c1468784876cb99192b7f41c7a5
PM / Hibernate: Replace bdget call with simple atomic_inc of i_count

Create bdgrab().  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).

Fixes http://bugzilla.kernel.org/show_bug.cgi?id=13827

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
fs/block_dev.c
include/linux/fs.h
mm/swapfile.c