Dwight Engen
d0aedcd4f1
vio: fix reuse of vio_dring slot
...
vio_dring_avail() will allow use of every dring entry, but when the last
entry is allocated then dr->prod == dr->cons which is indistinguishable from
the ring empty condition. This causes the next allocation to reuse an entry.
When this happens in sunvdc, the server side vds driver begins nack'ing the
messages and ends up resetting the ldc channel. This problem does not effect
sunvnet since it checks for < 2.
The fix here is to just never allocate the very last dring slot so that full
and empty are not the same condition. The request start path was changed to
check for the ring being full a bit earlier, and to stop the blk_queue if
there is no space left. The blk_queue will be restarted once the ring is
only half full again. The number of ring entries was increased to 512 which
matches the sunvnet and Solaris vdc drivers, and greatly reduces the
frequency of hitting the ring full condition and the associated blk_queue
stop/starting. The checks in sunvent were adjusted to account for
vio_dring_avail() returning 1 less.
Orabug: 19441666
OraBZ: 14983
Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-09-30 14:37:35 -07:00
..
aoe
mm: close PageTail race
2014-03-04 07:55:47 -08:00
drbd
Merge branch 'for-3.17/drivers' of git://git.kernel.dk/linux-block
2014-08-14 09:10:21 -06:00
mtip32xx
PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use
2014-08-12 12:15:14 -06:00
paride
block: remove struct request buffer member
2014-04-15 14:03:02 -06:00
rsxx
PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use
2014-08-12 12:15:14 -06:00
xen-blkback
xen-blkback: defer freeing blkif to avoid blocking xenwatch
2014-05-28 14:17:32 -04:00
zram
zram: fix incorrect stat with failed_reads
2014-08-29 16:28:16 -07:00
amiflop.c
block: remove struct request buffer member
2014-04-15 14:03:02 -06:00
ataflop.c
Merge branch 'for-3.16/core' of git://git.kernel.dk/linux-block into next
2014-06-02 09:29:34 -07:00
brd.c
brd: add ram disk visibility option
2014-08-21 20:42:01 -05:00
cciss.c
block: use pci_zalloc_consistent
2014-08-08 15:57:28 -07:00
cciss.h
cciss_cmd.h
cciss_scsi.c
cciss_scsi.h
cpqarray.c
cpqarray: fix info leak in ida_locked_ioctl()
2013-09-24 17:00:26 -07:00
cpqarray.h
cryptoloop.c
move linux/loop.h to drivers/block
2013-06-29 12:46:45 +04:00
DAC960.c
block: use pci_zalloc_consistent
2014-08-08 15:57:28 -07:00
DAC960.h
floppy.c
Merge branch 'for-jens' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/linux-block into for-linus
2014-06-18 10:30:22 -07:00
hd.c
block: remove struct request buffer member
2014-04-15 14:03:02 -06:00
ida_cmd.h
ida_ioctl.h
Kconfig
zram: promote zram from staging
2014-01-30 16:56:55 -08:00
loop.c
Merge branch 'sched/urgent' into sched/core, to avoid conflicts
2014-05-07 13:15:46 +02:00
loop.h
move linux/loop.h to drivers/block
2013-06-29 12:46:45 +04:00
Makefile
zram: promote zram from staging
2014-01-30 16:56:55 -08:00
mg_disk.c
block: remove struct request buffer member
2014-04-15 14:03:02 -06:00
nbd.c
nbd: zero from and len fields in NBD_CMD_DISCONNECT.
2014-06-06 16:08:18 -07:00
null_blk.c
null_blk: fix softirq completions for queue_mode == 1
2014-06-16 11:40:25 -06:00
nvme-core.c
Merge git://git.infradead.org/users/willy/linux-nvme
2014-06-15 15:58:03 -10:00
nvme-scsi.c
NVMe: Fix START_STOP_UNIT Scsi->NVMe translation.
2014-06-13 13:11:00 -04:00
osdblk.c
block: replace strict_strtoul() with kstrtoul()
2013-09-11 15:56:56 -07:00
pktcdvd.c
block: add blk_rq_set_block_pc()
2014-06-06 07:57:37 -06:00
ps3disk.c
block: Kill bio_segments()/bi_vcnt usage
2013-11-23 22:33:51 -08:00
ps3vram.c
block: Convert bio_for_each_segment() to bvec_iter
2013-11-23 22:33:49 -08:00
rbd.c
rbd: remove extra newlines from rbd_warn() messages
2014-08-07 16:01:09 +04:00
rbd_types.h
skd_main.c
PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use
2014-08-12 12:15:14 -06:00
skd_s1120.h
skd: fix formatting in skd_s1120.h
2013-11-08 09:10:30 -07:00
smart1,2.h
sunvdc.c
vio: fix reuse of vio_dring slot
2014-09-30 14:37:35 -07:00
swim.c
block: remove struct request buffer member
2014-04-15 14:03:02 -06:00
swim3.c
block: remove struct request buffer member
2014-04-15 14:03:02 -06:00
swim_asm.S
sx8.c
drivers/block/sx8.c: remove unnecessary pci_set_drvdata()
2014-01-21 20:16:56 -08:00
umem.c
block: Convert drivers to immutable biovecs
2013-11-23 22:33:51 -08:00
umem.h
virtio_blk.c
block: virtio-blk: support multi virt queues per virtio-blk device
2014-07-01 10:51:03 -06:00
xen-blkfront.c
Merge branch 'stable/for-jens-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip into for-3.16/drivers
2014-05-28 12:37:04 -06:00
xsysace.c
block: systemace: Remove .owner field for driver
2014-08-21 20:37:54 -05:00
z2ram.c
block: remove struct request buffer member
2014-04-15 14:03:02 -06:00