linux/drivers/block
Ming Lei aa0818c6ee virtio_blk: fix race between start and stop queue
When there isn't enough vring descriptor for adding to vq,
blk-mq will be put as stopped state until some of pending
descriptors are completed & freed.

Unfortunately, the vq's interrupt may come just before
blk-mq's BLK_MQ_S_STOPPED flag is set, so the blk-mq will
still be kept as stopped even though lots of descriptors
are completed and freed in the interrupt handler. The worst
case is that all pending descriptors are freed in the
interrupt handler, and the queue is kept as stopped forever.

This patch fixes the problem by starting/stopping blk-mq
with holding vq_lock.

Cc: Jens Axboe <axboe@kernel.dk>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Cc: stable@kernel.org
Signed-off-by: Jens Axboe <axboe@fb.com>

Conflicts:
	drivers/block/virtio_blk.c
2014-05-27 08:41:10 -06:00
..
aoe mm: close PageTail race 2014-03-04 07:55:47 -08:00
drbd Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2014-04-12 14:49:50 -07:00
mtip32xx Merge branch 'for-3.15/drivers' of git://git.kernel.dk/linux-block 2014-04-01 19:43:53 -07:00
paride
rsxx
xen-blkback
zram zram: support REQ_DISCARD 2014-04-07 16:36:02 -07:00
DAC960.c DAC960: remove sleep_on usage 2014-03-13 14:56:38 -06:00
DAC960.h
Kconfig
Makefile
amiflop.c
ataflop.c ataflop: fix sleep_on races 2014-03-13 14:56:38 -06:00
brd.c
cciss.c cciss: Fallback to MSI rather than to INTx if MSI-X failed 2014-03-13 14:56:39 -06:00
cciss.h
cciss_cmd.h
cciss_scsi.c
cciss_scsi.h
cpqarray.c
cpqarray.h
cryptoloop.c
floppy.c floppy: don't write kernel-only members to FDRAWCMD ioctl output 2014-05-05 07:46:56 -07:00
hd.c
ida_cmd.h
ida_ioctl.h
loop.c drivers/block/loop.c: ratelimit error messages 2014-04-08 14:44:35 -06:00
loop.h
mg_disk.c
nbd.c switch nbd to sockfd_lookup/sockfd_put 2014-04-01 23:19:10 -04:00
null_blk.c
nvme-core.c Merge git://git.infradead.org/users/willy/linux-nvme 2014-04-11 16:45:59 -07:00
nvme-scsi.c NVMe: Retry failed commands with non-fatal errors 2014-04-10 17:11:59 -04:00
osdblk.c
pktcdvd.c
ps3disk.c
ps3vram.c
rbd.c rbd: prefix rbd writes with CEPH_OSD_OP_SETALLOCHINT osd op 2014-04-03 10:33:52 +08:00
rbd_types.h
skd_main.c skd: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-21 15:45:26 -08:00
skd_s1120.h
smart1,2.h
sunvdc.c
swim.c
swim3.c swim3: fix interruptible_sleep_on race 2014-03-13 14:56:38 -06:00
swim_asm.S
sx8.c
umem.c
umem.h
virtio_blk.c virtio_blk: fix race between start and stop queue 2014-05-27 08:41:10 -06:00
xen-blkfront.c
xsysace.c
z2ram.c