Alan Stern wrote: > Okay, this is good. Here's the important part: > >> f636c240 932590545 S Bo:1:008:1 -115 31 = 55534243 05000000 00000000 >> 00000600 00000000 00000000 00000000 000000 >> f636c240 932590611 C Bo:1:008:1 0 31 > >> f636c240 932591559 S Bi:1:008:2 -115 13 < >> f636c240 932591852 C Bi:1:008:2 0 13 = 55534253 05000000 00000000 01 >> f636c240 932591987 S Bo:1:008:1 -115 31 = 55534243 06000000 12000000 >> 80000603 00000012 00000000 00000000 000000 >> f636c240 932592100 C Bo:1:008:1 0 31 > >> c3ad3bc0 932592164 S Bi:1:008:2 -115 18 < >> c3ad3bc0 932592345 C Bi:1:008:2 0 18 = f0000200 0000000b 00000000 3a000000 0000 >> f636c240 932592520 S Bi:1:008:2 -115 13 < >> f636c240 932592599 C Bi:1:008:2 0 13 = 55534253 06000000 00000000 00 > > Above is a failed TEST UNIT READY command followed by a REQUEST SENSE > command. The reply to the REQUEST SENSE indicates that there are 19 > bytes of sense data available, even though the device was asked for > only 18 bytes. This causes usb-storage to assume that the device can > handle large REQUEST SENSE commands. > >> f636c240 932592794 S Bo:1:008:1 -115 31 = 55534243 07000000 00000000 >> 00010600 20000000 00000000 00000000 000000 >> f636c240 932592846 C Bo:1:008:1 0 31 > >> f636c240 932592893 S Bi:1:008:2 -115 13 < >> f636c240 932594973 C Bi:1:008:2 0 13 = 55534253 07000000 00000000 01 >> f636c240 932595095 S Bo:1:008:1 -115 31 = 55534243 08000000 60000000 >> 80010603 20000060 00000000 00000000 000000 >> f636c240 932595221 C Bo:1:008:1 0 31 > >> f6b70bc0 932595279 S Bi:1:008:2 -115 96 < >> f6b70bc0 932595473 C Bi:1:008:2 -121 18 = f0000200 0000000b 00000000 >> 3a000000 0000 >> f636c240 932595609 S Bi:1:008:2 -115 13 < >> f636c240 962928354 C Bi:1:008:2 -104 0 > > This is another failed TEST UNIT READY followed by another REQUEST > SENSE command, this time asking for 96 bytes. The device sent back 18 > bytes of sense data and then hung. > > Ben, it looks like we need a more reliable way of telling which devices > can support SANE_SENSE. Or else we need a flag to indicate that some > devices can't support it. The approach used for the Huawei won't work > here because this device doesn't return an error; it just hangs. > Alan, I'm certain that SANE_SENSE is used often (much more than these faulty devices are). Since the problem is the device is faulty, I don't think its appropriate to reduce the SANE_SENSE functionality to work around the faulty device. It seems appropriate that the INSANE_SENSE idea be brought back. The INSANE_SENSE flag could prevent the SANE_SENSE from being detected. Most importantly it could be specified as a quirk on the kernel command line. (ie: "usb-storage.quirks=067b:1063:XYZ") I don't like the quirk idea, but it seems like the only appropriate solution when the device has explicitly claimed to have more data than 18. I'll prepare a patch in the next few days to make review and discuss. The only other idea I have at this moment is to remove the if-condition that detects truncated sense data. I am not entirely opposed to this idea, but it would remove large sense support for everything except SAT commands. Regards, Ben Efros -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html