linux/drivers/usb/storage
Hans de Goede 5df2be6333 uas: Remove task-management / abort error handling code
There are various bug reports about oopses / hangs with the uas driver,
which all point to the abort-command and logical-unit-reset (task-management)
error handling paths.

Getting these right is very hard, there are quite a few corner cases, and
testing is almost impossible since under normal operation these code paths
are not used at all.

Another problem is that there are also some cases where it simply is not clear
what to do at all. E.g. over usb-2 multiple outstanding commands share the same
endpoint. What if a command gets aborted while its sense urb is half way
through completing (so some data has been transfered but not all). Since the
urb is not yet complete we don't know if the sense urb is actually for this
command, or for one of the other oustanding commands. If it is for one of the
other commands and we cancel it, then we end up in an undefined state. But if
it is actually for the command we're aborting, and the abort succeeds, then it
may never complete...

This exact same problem applies to logical unit resets too, if there are
multiple luns, then commands outstanding on both luns share the sense
endpoint. If there is only a single lun, then doing a logical unit reset is
little better then doing a full usb device reset.

So summarizing because:
1) abort / lun-reset is very tricky to get right
2) Not being able to test the tricky code, which means it will have bugs
3) This being a code path which under normal operation will never happen,
   so being slow / sub-optimal here is not really an issue
4) Under error conditions we will still be able to recover through usb
   device resets.
5) This may be a bit slower in some cases, but this is actually faster in
   cases where the bridge ship has locked up, which seems to be the most
   common error case sofar.

This commit removes the abort / lun-reset error handling paths, and also the
taks-mgmt code since those are the only 2 task-mgmt users. Leaving only the
(tested and testable) usb-device-reset error handling path in place.

Note I realize that this is somewhat of a big hammer, but currently people
are seeing very hard to debug oopses with uas. First let focus on making uas
work reliable, then we can later look into adding more fine grained error
handling.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-09-23 21:42:10 -07:00
..
alauda.c usb: storage: alauda: initialize variables directly 2013-05-16 17:48:28 -07:00
cypress_atacb.c usb-storage: CY7C68300A chips do not support Cypress ATACB 2013-04-23 10:08:13 -07:00
datafab.c usb: storage: Convert US_DEBUGP to usb_stor_dbg 2013-04-19 11:46:50 -07:00
debug.c usb: storage: Convert US_DEBUGP to usb_stor_dbg 2013-04-19 11:46:50 -07:00
debug.h usb: storage: Convert US_DEBUGP to usb_stor_dbg 2013-04-19 11:46:50 -07:00
ene_ub6250.c staging: keucr: remove driver 2014-07-23 19:01:36 -07:00
freecom.c usb: storage: Convert US_DEBUGP to usb_stor_dbg 2013-04-19 11:46:50 -07:00
initializers.c usb: storage: Convert US_DEBUGP to usb_stor_dbg 2013-04-19 11:46:50 -07:00
initializers.h
isd200.c usb: storage: Convert US_DEBUGP to usb_stor_dbg 2013-04-19 11:46:50 -07:00
jumpshot.c usb: storage: Convert US_DEBUGP to usb_stor_dbg 2013-04-19 11:46:50 -07:00
karma.c usb: storage: Convert US_DEBUGP to usb_stor_dbg 2013-04-19 11:46:50 -07:00
Kconfig SCSI misc on 20140806 2014-08-06 20:10:32 -07:00
Makefile
onetouch.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
option_ms.c usb: storage: Convert US_DEBUGP to usb_stor_dbg 2013-04-19 11:46:50 -07:00
option_ms.h
protocol.c USB: storage: fix compile warning 2013-12-09 23:45:39 -08:00
protocol.h
realtek_cr.c USB: usb-stor: realtek_cr: Fix compile error 2013-05-16 17:28:27 -07:00
scsiglue.c usb-storage/SCSI: Add broken_fua blacklist flag 2014-06-30 22:47:18 -07:00
scsiglue.h
sddr09.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
sddr55.c usb: storage: Convert US_DEBUGP to usb_stor_dbg 2013-04-19 11:46:50 -07:00
shuttle_usbat.c usb: storage: shuttle_usbat: fix discs being detected twice 2014-05-03 18:04:28 -04:00
sierra_ms.c usb: storage: Convert US_DEBUGP to usb_stor_dbg 2013-04-19 11:46:50 -07:00
sierra_ms.h
transport.c usb: storage: Convert US_DEBUGP to usb_stor_dbg 2013-04-19 11:46:50 -07:00
transport.h
uas-detect.h uas: Add missing le16_to_cpu calls to asm1051 / asm1053 usb-id check 2014-09-11 14:21:43 -07:00
uas.c uas: Remove task-management / abort error handling code 2014-09-23 21:42:10 -07:00
unusual_alauda.h
unusual_cypress.h usb-storage: restrict bcdDevice range for Super Top in Cypress ATACB 2014-02-04 12:59:14 -08:00
unusual_datafab.h
unusual_devs.h USB: storage: Add quirks for Entrega/Xircom USB to SCSI converters 2014-09-19 15:01:38 -07:00
unusual_ene_ub6250.h
unusual_freecom.h
unusual_isd200.h
unusual_jumpshot.h
unusual_karma.h
unusual_onetouch.h
unusual_realtek.h
unusual_sddr09.h
unusual_sddr55.h
unusual_uas.h uas: Add another ASM1051 usb-id to the uas blacklist 2014-09-23 21:40:48 -07:00
unusual_usbat.h
usb.c uas: Add no-report-opcodes quirk 2014-09-23 21:40:48 -07:00
usb.h usb-storage: Modify and export adjust_quirks so that it can be used by uas 2014-03-04 15:38:17 -08:00
usual-tables.c