android_kernel_google_msm/drivers/block
Alex Elder 095cb2142d rbd: don't hold spinlock during messenger flush
(cherry picked from commit cd9d9f5df6)

A recent change made changes to the rbd_client_list be protected by
a spinlock.  Unfortunately in rbd_put_client(), the lock is taken
before possibly dropping the last reference to an rbd_client, and on
the last reference that eventually calls flush_workqueue() which can
sleep.

The problem was flagged by a debug spinlock warning:
    BUG: spinlock wrong CPU on CPU#3, rbd/27814

The solution is to move the spinlock acquisition and release inside
rbd_client_release(), which is the spot where it's really needed for
protecting the removal of the rbd_client from the client list.

Signed-off-by: Alex Elder <elder@dreamhost.com>
Reviewed-by: Sage Weil <sage@newdream.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-11-26 11:38:10 -08:00
..
aoe aoe: assert AoE packets marked as requiring no checksum 2012-10-13 05:38:46 +09:00
drbd connector/userns: replace netlink uses of cap_raised() with capable() 2012-05-10 23:21:39 -04:00
mtip32xx mtip32xx: release the semaphore on an error path 2012-05-11 16:42:14 +02:00
paride
xen-blkback xen/m2p: do not reuse kmap_op->dev_bus_addr 2012-10-02 10:30:06 -07:00
amiflop.c
ataflop.c
brd.c
cciss.c
cciss.h
cciss_cmd.h
cciss_scsi.c cciss: fix handling of protocol error 2012-10-02 10:29:50 -07:00
cciss_scsi.h
cpqarray.c
cpqarray.h
cryptoloop.c
DAC960.c dac960: Remove unused variables from DAC960_CreateProcEntries() 2012-05-11 16:42:14 +02:00
DAC960.h
floppy.c floppy: do put_disk on current dr if blk_init_queue fails 2012-11-05 09:50:41 +01:00
hd.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
ida_cmd.h
ida_ioctl.h
Kconfig
loop.c
Makefile
mg_disk.c
nbd.c nbd: clear waiting_queue on shutdown 2012-10-02 10:29:59 -07:00
nvme.c
osdblk.c
pktcdvd.c
ps3disk.c
ps3vram.c
rbd.c rbd: don't hold spinlock during messenger flush 2012-11-26 11:38:10 -08:00
rbd_types.h rbd: small changes 2012-03-22 10:47:50 -05:00
smart1,2.h
sunvdc.c powerpc+sparc/vio: Modernize driver registration 2012-03-28 11:33:24 +11:00
swim.c
swim3.c
swim_asm.S
sx8.c
ub.c
umem.c umem: fix up unplugging 2012-07-16 09:04:08 -07:00
umem.h
virtio_blk.c virtio: fixes on top of 3.4-rc2 2012-04-16 18:34:12 -07:00
xd.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
xd.h
xen-blkfront.c Merge branch 'for-3.4/drivers' of git://git.kernel.dk/linux-block 2012-04-13 18:45:13 -07:00
xsysace.c
z2ram.c