linux-uconsole/drivers
Mikulas Patocka c78d5ed42d sym53c8xx_2: Set DID_REQUEUE return code when aborting squeue
commit fd1232b214 upstream.

This patch fixes I/O errors with the sym53c8xx_2 driver when the disk
returns QUEUE FULL status.

When the controller encounters an error (including QUEUE FULL or BUSY
status), it aborts all not yet submitted requests in the function
sym_dequeue_from_squeue.

This function aborts them with DID_SOFT_ERROR.

If the disk has full tag queue, the request that caused the overflow is
aborted with QUEUE FULL status (and the scsi midlayer properly retries
it until it is accepted by the disk), but the sym53c8xx_2 driver aborts
the following requests with DID_SOFT_ERROR --- for them, the midlayer
does just a few retries and then signals the error up to sd.

The result is that disk returning QUEUE FULL causes request failures.

The error was reproduced on 53c895 with COMPAQ BD03685A24 disk
(rebranded ST336607LC) with command queue 48 or 64 tags.  The disk has
64 tags, but under some access patterns it return QUEUE FULL when there
are less than 64 pending tags.  The SCSI specification allows returning
QUEUE FULL anytime and it is up to the host to retry.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Cc: Matthew Wilcox <matthew@wil.cx>
Cc: James Bottomley <JBottomley@Parallels.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-09 11:14:03 -07:00
..
accessibility
acpi ACPI: Fix conflict between customized DSDT and DSDT local copy 2014-06-30 20:09:44 -07:00
amba
ata ahci: add PCI ID for Marvell 88SE91A0 SATA Controller 2014-06-16 13:42:54 -07:00
atm atm: idt77252: fix dev refcnt leak 2013-12-08 07:29:25 -08:00
auxdisplay
base drivercore: deferral race condition fix 2014-06-07 13:25:31 -07:00
bcma
block rbd: handle parent_overlap on writes correctly 2014-07-09 11:14:01 -07:00
bluetooth bluetooth: hci_ldisc: fix deadlock condition 2014-06-30 20:09:44 -07:00
bus bus: mvebu-mbus: allow several windows with the same target/attribute 2014-06-07 13:25:37 -07:00
cdrom
char applicom: dereferencing NULL on error path 2014-06-30 20:09:41 -07:00
clk clk: vexpress: NULL dereference on error path 2014-06-07 13:25:35 -07:00
clocksource clocksource: Exynos_mct: Register clock event after request_irq() 2014-06-07 13:25:29 -07:00
connector net: Use netlink_ns_capable to verify the permisions of netlink messages 2014-06-26 15:12:37 -04:00
cpufreq cpufreq: Fix timer/workqueue corruption due to double queueing 2014-04-14 06:42:19 -07:00
cpuidle cpuidle: Check the result of cpuidle_get_driver() against NULL 2014-04-14 06:42:15 -07:00
crypto crypto: caam - add allocation failure handling in SPRINTFCAT macro 2014-06-07 13:25:39 -07:00
dca
devfreq
dio
dma ioat: fix tasklet tear down 2014-03-06 21:30:14 -08:00
edac i7300_edac: Fix device reference count 2014-03-06 21:30:13 -08:00
eisa Revert "EISA: Initialize device before its resources" 2014-02-13 13:47:59 -08:00
extcon extcon: max77693: Fix two NULL pointer exceptions on missing pdata 2014-07-06 18:54:15 -07:00
firewire firewire: ohci: fix probe failure with Agere/LSI controllers 2014-05-30 21:52:11 -07:00
firmware dmi: add support for exact DMI matches in addition to substring matching 2013-11-29 11:11:53 -08:00
gpio gpio: mxs: Allow for recursive enable_irq_wake() call 2014-05-13 13:59:45 +02:00
gpu drm/vmwgfx: Fix incorrect write to read-only register v2: 2014-07-09 11:14:00 -07:00
hid HID: core: fix validation of report id 0 2014-06-30 20:09:42 -07:00
hsi
hv Drivers: hv: balloon: Ensure pressure reports are posted regularly 2014-06-26 15:12:40 -04:00
hwmon hwmon: (ina2xx) Cast to s16 on shunt and current regs 2014-07-09 11:14:01 -07:00
hwspinlock
i2c i2c: s3c2410: resume race fix 2014-06-07 13:25:39 -07:00
ide
idle x86 idle: Repair large-server 50-watt idle-power regression 2014-01-09 12:24:21 -08:00
iio iio: of_iio_channel_get_by_name() returns non-null pointers for error legs 2014-07-09 11:14:02 -07:00
infiniband IB/umad: Fix use-after-free on close 2014-07-06 18:54:14 -07:00
input Input: elantech - don't set bit 1 of reg_10 when the no_hw_res quirk is set 2014-07-06 18:54:13 -07:00
iommu iommu/amd: Fix interrupt remapping for aliased devices 2014-06-07 13:25:40 -07:00
ipack
irqchip irqchip: spear_shirq: Fix interrupt offset 2014-07-09 11:14:02 -07:00
isdn isdnloop: several buffer overflows 2014-04-14 06:42:18 -07:00
leds leds: leds-pwm: properly clean up after probe failure 2014-06-07 13:25:34 -07:00
lguest
macintosh
mailbox
md md: flush writes before starting a recovery. 2014-07-09 11:14:02 -07:00
media media: uvcvideo: Fix clock param realtime setting 2014-06-30 20:09:44 -07:00
memory
memstick
message
mfd mfd: tps65910: Fix possible invalid pointer dereference on regmap_add_irq_chip fail 2014-05-06 07:55:28 -07:00
misc mei: me: fix hw ready reset flow 2014-07-06 18:54:15 -07:00
mmc mmc: rtsx: add R1-no-CRC mmc command type handle 2014-07-09 11:14:02 -07:00
mtd mtd: nand: omap: fix BCHx ecc.correct to return detected bit-flips in erased-page 2014-07-09 11:14:00 -07:00
net b43: fix frequency reported on G-PHY with /new/ firmware 2014-07-09 11:14:01 -07:00
nfc
ntb NTB: Correct debugfs to work with more than 1 NTB Device 2013-11-13 12:05:35 +09:00
nubus
of of: fix PCI bus match for PCIe slots 2014-02-22 12:41:27 -08:00
oprofile
parisc
parport parport: parport_pc: remove double PCI ID for NetMos 2014-02-06 11:08:15 -08:00
pci PCI: Fix incorrect vgaarb conditional in WARN_ON() 2014-07-06 18:54:13 -07:00
pcmcia
pinctrl pinctrl: protect pinctrl_list add 2014-02-20 11:06:11 -08:00
platform hp_accel: Add a new PnP ID HPQ6007 for new HP laptops 2014-02-06 11:08:16 -08:00
pnp PNP / ACPI: proper handling of ACPI IO/Memory resource parsing failures 2014-03-23 21:38:22 -07:00
power power: max17040: Fix NULL pointer dereference when there is no platform_data 2014-02-22 12:41:29 -08:00
pps
ps3
ptp
pwm
rapidio rapidio/tsi721: fix tasklet termination in dma channel release 2014-03-23 21:38:09 -07:00
regulator regulator: core: Replace direct ops->disable usage 2014-03-31 09:58:13 -07:00
remoteproc
reset
rpmsg
rtc rtc: rtc-at91rm9200: fix infinite wait for ACKUPD irq 2014-06-26 15:12:37 -04:00
s390 s390/chsc: fix SEI usage on old FW levels 2014-05-13 13:59:42 +02:00
sbus
scsi sym53c8xx_2: Set DID_REQUEUE return code when aborting squeue 2014-07-09 11:14:03 -07:00
sfi
sh
sn
spi spi: spi-ath79: fix initial GPIO CS line setup 2014-03-23 21:38:16 -07:00
ssb
ssbi
staging staging: tidspbridge: check for CONFIG_SND_OMAP_SOC_MCBSP 2014-06-30 20:09:41 -07:00
target iscsi-target: Explicily clear login response PDU in exception path 2014-07-06 18:54:13 -07:00
tc
thermal
tty serial: 8250_dw: Fix LCR workaround regression 2014-07-09 11:14:02 -07:00
uio Fix a few incorrectly checked [io_]remap_pfn_range() calls 2013-11-13 12:05:33 +09:00
usb usb: gadget: f_fs: fix NULL pointer dereference when there are no strings 2014-07-09 11:14:00 -07:00
uwb
vfio mm: close PageTail race 2014-04-03 12:01:05 -07:00
vhost vhost: validate vhost_get_vq_desc return value 2014-04-14 06:42:18 -07:00
video drivers/video/fbdev/fb-puv3.c: Add header files for function unifb_mmap 2014-07-09 11:14:03 -07:00
virt
virtio virtio_balloon: don't softlockup on huge balloon changes. 2014-05-13 13:59:41 +02:00
vlynq
vme VME: Correct read/write alignment algorithm 2014-02-22 12:41:28 -08:00
w1 w1: fix w1_send_slave dropping a slave id 2014-05-06 07:55:28 -07:00
watchdog watchdog: ath79_wdt: avoid spurious restarts on AR934x 2014-07-06 18:54:14 -07:00
xen xen/gnttab: leave lazy MMU mode in the case of a m2p override failure 2013-12-11 22:36:27 -08:00
zorro
Kconfig
Makefile