linux/drivers
Mike Christie bda69f1aae SCSI: add 1024 max sectors black list flag
[ Upstream commit 35e9a9f939 ]

This works around a issue with qnap iscsi targets not handling large IOs
very well.

The target returns:

VPD INQUIRY: Block limits page (SBC)
  Maximum compare and write length: 1 blocks
  Optimal transfer length granularity: 1 blocks
  Maximum transfer length: 4294967295 blocks
  Optimal transfer length: 4294967295 blocks
  Maximum prefetch, xdread, xdwrite transfer length: 0 blocks
  Maximum unmap LBA count: 8388607
  Maximum unmap block descriptor count: 1
  Optimal unmap granularity: 16383
  Unmap granularity alignment valid: 0
  Unmap granularity alignment: 0
  Maximum write same length: 0xffffffff blocks
  Maximum atomic transfer length: 0
  Atomic alignment: 0
  Atomic transfer length granularity: 0

and it is *sometimes* able to handle at least one IO of size up to 8 MB. We
have seen in traces where it will sometimes work, but other times it
looks like it fails and it looks like it returns failures if we send
multiple large IOs sometimes. Also it looks like it can return 2 different
errors. It will sometimes send iscsi reject errors indicating out of
resources or it will send invalid cdb illegal requests check conditions.
And then when it sends iscsi rejects it does not seem to handle retries
when there are command sequence holes, so I could not just add code to
try and gracefully handle that error code.

The problem is that we do not have a good contact for the company,
so we are not able to determine under what conditions it returns
which error and why it sometimes works.

So, this patch just adds a new black list flag to set targets like this to
the old max safe sectors of 1024. The max_hw_sectors changes added in 3.19
caused this regression, so I also ccing stable.

Reported-by: Christian Hesse <list@eworm.de>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Cc: stable@vger.kernel.org
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
History 2015-08-06 14:49:50 -04:00
..
accessibility printk: move braille console support into separate braille.[ch] files 2013-07-31 14:41:03 -07:00
acpi ACPICA: Tables: Fix an issue that FACS initialization is performed twice 2015-08-04 14:33:56 -04:00
amba PM / Domains: Move dev_pm_domain_attach|detach() to pm_domain.h 2014-09-30 01:16:44 +02:00
ata libata: force disable trim for SuperSSpeed S238 2015-08-04 14:29:51 -04:00
atm solos-pci: fix error return code 2014-11-23 14:29:44 -05:00
auxdisplay framebuffer: Use fb_<level> 2013-10-29 12:53:07 +02:00
base Fix firmware loader uevent buffer NULL pointer dereference 2015-08-04 14:43:38 -04:00
bcma bcma: add another PCI ID of device with BCM43228 2014-10-23 14:02:06 -04:00
block rbd: use GFP_NOIO in rbd_obj_request_create() 2015-07-05 10:12:55 -04:00
bluetooth Bluetooth: ath3k: Add support of 04ca:300d AR3012 device 2015-07-03 23:02:34 -04:00
bus bus: arm-ccn: Fix node->XP config conversion 2015-07-03 23:02:13 -04:00
cdrom block,scsi: fixup blk_get_request dead queue scenarios 2014-08-28 10:03:46 -06:00
char agp/intel: Fix typo in needs_ilk_vtd_wa() 2015-07-05 10:12:53 -04:00
clk clk: at91: fix h32mx prototype inclusion in pmc header 2015-07-01 15:37:14 -04:00
clocksource clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier 2015-07-05 10:12:52 -04:00
connector connector: Use ktime_get_ns() 2014-07-23 10:18:07 -07:00
cpufreq intel_pstate: set BYT MSR with wrmsrl_on_cpu() 2015-07-03 23:02:15 -04:00
cpuidle cpuidle: remove state_count field from struct cpuidle_device 2015-04-24 17:13:56 -04:00
crypto Revert "crypto: talitos - convert to use be16_add_cpu()" 2015-07-03 23:02:16 -04:00
dca dca: convert to idr_alloc() 2013-02-27 19:10:15 -08:00
devfreq PM / devfreq: exynos: Enable building exynos PPMU as module 2014-09-29 20:22:36 +09:00
dio m68k: don't export static inline functions 2009-12-06 11:18:28 +01:00
dma dmaengine: mv_xor: bug fix for racing condition in descriptors cleanup 2015-07-03 23:02:28 -04:00
dma-buf reservation: Remove shadowing local variable 'ret' 2015-03-23 21:02:50 -04:00
edac sb_edac: Fix erroneous bytes->gigabytes conversion 2015-07-13 08:50:04 -04:00
eisa Revert "EISA: Initialize device before its resources" 2014-01-17 14:57:29 -07:00
extcon extcon: gpio: Fix code cleanup 2014-09-22 16:48:47 +09:00
firewire firewire: cdev: prevent kernel stack leaking into ioctl arguments 2014-11-14 12:10:13 +01:00
firmware firmware: dmi_scan: Fix ordering of product_uuid 2015-06-10 13:42:36 -04:00
fmc Merge 3.14-rc5 into char-misc-next 2014-03-02 19:53:09 -08:00
gpio gpio: crystalcove: set IRQCHIP_SKIP_SET_WAKE for the irqchip 2015-07-03 23:02:23 -04:00
gpu drm: add a check for x/y in drm_mode_setcrtc 2015-08-04 14:27:42 -04:00
hid HID: sony: Add support for the third-party SMK PS3 Bluetooth Remote 2015-06-28 21:23:48 -04:00
hsi HSI changes for the v3.17 series 2014-08-06 20:06:14 -07:00
hv Drivers: hv: vmbus: Don't wait after requesting offers 2015-05-17 19:12:43 -04:00
hwmon hwmon: (mcp3021) Fix broken output scaling 2015-07-05 10:12:56 -04:00
hwspinlock hwspinlock: enable OMAP build for AM33xx, AM43xx & DRA7xx 2014-07-29 11:46:28 +03:00
i2c i2c: at91: fix a race condition when using the DMA controller 2015-07-03 23:02:28 -04:00
ide Merge branch 'for-3.18/drivers' of git://git.kernel.dk/linux-block 2014-10-18 12:12:45 -07:00
idle intel_idle: Broadwell support 2014-08-15 17:06:40 -04:00
iio iio: adc: at91_adc: allow to use full range of startup time 2015-08-04 14:16:40 -04:00
infiniband iser-target: Fix possible deadlock in RDMA_CM connection error 2015-08-04 14:34:34 -04:00
input Input: synaptics - add min/max quirk for Lenovo S540 2015-07-20 21:12:44 -04:00
iommu iommu/amd: Handle large pages correctly in free_pagetable 2015-07-13 08:50:07 -04:00
ipack ipoctal: clear break interrupt as soon as it occurs 2014-09-23 23:26:42 -07:00
irqchip irqchip: sunxi-nmi: Fix off-by-one error in irq iterator 2015-07-03 12:34:47 -04:00
isdn isdn/gigaset: fix usb_gigaset write_cmd result race 2014-10-14 15:05:35 -04:00
leds leds / PM: fix hibernation on arm when gpio-led used with CPU led trigger 2015-07-03 23:02:15 -04:00
lguest x86: Clean up cr4 manipulation 2015-06-28 13:39:27 -04:00
macintosh powerpc: Move via-cuda symbol exports next to function definitions 2014-09-25 23:14:37 +10:00
mailbox Merge branch 'mailbox-for-linus' of git://git.linaro.org/landing-teams/working/fujitsu/integration 2014-10-21 11:21:19 -07:00
mcb mcb: Add support for shared PCI IRQs 2014-05-27 17:38:11 -07:00
md md: fix a build warning 2015-08-04 14:31:58 -04:00
media [media] media: Fix regression in some more dib0700 based devices 2015-07-03 23:02:17 -04:00
memory AT91 reset, poweroff and ram drivers 2014-08-25 15:35:26 +02:00
memstick memstick: mspro_block: add missing curly braces 2015-05-17 19:12:28 -04:00
message SCSI for-linus on 20141007 2014-10-07 21:29:18 -04:00
mfd mfd: kempld-core: Fix callback return value check 2015-04-16 20:13:19 -04:00
misc mei: me: wait for power gating exit confirmation 2015-07-03 23:02:29 -04:00
mmc mmc: card: Fixup request missing in mmc_blk_issue_rw_rq 2015-08-04 14:35:17 -04:00
mtd mtd: fix: avoid race condition when accessing mtd->usecount 2015-07-03 23:02:14 -04:00
net Revert "can: fix loss of CAN frames in raw_rcv" 2015-08-04 13:32:39 -04:00
nfc NFC: st21nfcb: remove st21nfcb_nci_i2c_disable 2015-07-03 23:02:25 -04:00
ntb ntb: Adding split BAR support for Haswell platforms 2014-10-17 07:08:51 -04:00
nubus kernel/printk: use symbolic defines for console loglevels 2014-06-04 16:54:17 -07:00
of of: return NUMA_NO_NODE from fallback of_node_to_nid() 2015-08-04 14:39:26 -04:00
oprofile drivers/oprofile: Replace __get_cpu_var uses for address calculation 2014-08-26 13:45:46 -04:00
parisc Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-10-13 16:23:15 +02:00
parport parport: parport_pc: Implement architecture and device check to cut off false-positives 2014-09-23 23:14:28 -07:00
pci PCI: pciehp: Wait for hotplug command completion where necessary 2015-07-03 23:02:25 -04:00
pcmcia Disable write buffering on Toshiba ToPIC95 2015-07-03 23:02:29 -04:00
phy phy: Find the right match in devm_phy_destroy() 2015-04-16 20:11:41 -04:00
pinctrl pinctrl: mvebu: armada-38x: fix incorrect total number of GPIOs 2015-07-03 23:02:27 -04:00
platform dell-laptop: Fix allocating & freeing SMI buffer page 2015-08-04 14:38:19 -04:00
pnp PNP: replace strnicmp with strncasecmp 2014-10-14 02:18:25 +02:00
power power/reset: at91: fix return value check in at91_reset_platform_probe() 2015-06-10 13:42:45 -04:00
powercap powercap / RAPL: change domain detection message 2014-09-03 01:29:00 +02:00
pps drivers/pps/clients/pps-gpio.c: remove redundant of_match_ptr 2013-11-13 12:09:35 +09:00
ps3 ps3-vuart: don't use PREPARE_WORK 2014-03-07 10:24:48 -05:00
ptp PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use 2014-08-12 12:15:14 -06:00
pwm pwm: Changes for v3.18-rc1 2014-10-21 08:17:43 -07:00
rapidio PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use 2014-08-12 12:15:14 -06:00
ras trace, RAS: Add eMCA trace event interface 2014-06-25 13:26:47 -07:00
regulator regulator: core: fix constraints output buffer 2015-07-03 23:02:25 -04:00
remoteproc remoteproc: da8xx: don't select CMA on no-MMU 2014-06-17 17:09:36 +02:00
reset reset: sunxi: fix spinlock initialization 2015-01-27 08:29:41 -08:00
rpmsg A small pull request consisting of: 2013-05-07 14:02:00 -07:00
rtc drivers/rtc/rtc-s3c.c: add .needs_src_clk to s3c6410 RTC data 2015-03-28 09:59:44 -04:00
s390 KVM: s390: virtio-ccw: don't overwrite config space values 2015-07-20 21:12:42 -04:00
sbus Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc 2014-08-05 18:57:18 -07:00
scsi SCSI: add 1024 max sectors black list flag 2015-08-06 14:49:50 -04:00
sfi SFI / ACPI: Fix warnings reported during builds with W=1 2013-12-07 01:24:33 +01:00
sh drivers: sh: Leave disabling of unused PM domains to genpd 2014-09-09 00:46:13 +02:00
sn Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
soc soc: versatile: Add terminating entry for realview_soc_of_match 2014-10-28 22:05:07 +01:00
spi spi: orion: Fix maximum baud rates for Armada 370/XP 2015-07-03 23:02:19 -04:00
spmi spmi: Remove duplicate inclusion of module.h 2014-07-10 15:22:13 -07:00
ssb SSB: fix Kconfig dependencies 2015-05-17 19:12:34 -04:00
staging staging: vt6655: device_rx_srv check sk_buff is NULL 2015-07-03 23:02:22 -04:00
target iscsi-target: Convert iscsi_thread_set usage to kthread.h 2015-08-04 14:34:17 -04:00
tc TC: Handle device_register() errors. 2014-06-26 10:48:23 +01:00
thermal thermal: armada: Update Armada 380 thermal sensor coefficients 2015-06-10 13:42:37 -04:00
thunderbolt thunderbolt: Clear hops before overwriting 2014-08-26 14:54:48 -07:00
tty tty/serial: at91: RS485 mode: 0 is valid for delay_rts_after_send 2015-07-12 10:54:24 -04:00
uio uio: Export definition of struct uio_device 2014-10-02 21:35:54 -07:00
usb USB: usbfs: allow URBs to be reaped after disconnection 2015-08-04 14:38:38 -04:00
uwb uwb: add an ASIE sysfs attribute to uwb_rc devices 2014-09-23 22:05:26 -07:00
vfio vfio-pci: Fix the check on pci device type in vfio_pci_probe() 2015-01-27 08:29:40 -08:00
vhost vhost-scsi: Add missing virtio-scsi -> TCM attribute conversion 2015-01-27 08:29:45 -08:00
video video/fbdev: fix defio's fsync 2015-01-27 08:29:39 -08:00
virt drivers: clean-up prom.h implicit includes 2013-10-09 20:04:04 -05:00
virtio virtio-balloon: do not call blocking ops when !TASK_RUNNING 2015-04-16 20:11:27 -04:00
vlynq drivers/vlynq/vlynq.c: fix another resource size off by 1 error 2014-01-23 16:36:55 -08:00
vme vme: bridges: use pci_zalloc_consistent 2014-08-08 15:57:30 -07:00
w1 w1_therm reference count family data 2015-07-03 23:02:19 -04:00
watchdog watchdog: omap: assert the counter being stopped before reprogramming 2015-08-04 14:39:52 -04:00
xen x86/xen: allow privcmd hypercalls to be preempted 2015-07-20 21:12:45 -04:00
zorro zorro: Use ARRAY_SIZE 2014-07-11 10:38:02 +02:00
Kconfig soc: ti: add Keystone Navigator QMSS driver 2014-09-24 09:49:14 -04:00
Makefile Driver core patches for 3.17-rc1 2014-08-04 18:34:04 -07:00