Hi,
I have an usb-storage enclosure that houses a normal desktop
harddrive. I have been wondering why disks in that enclosure
seemed to be having less errors than when connected to a
normal IDE connector.
The reason is: USB-storage is ignoring a hint that something is
wrong. Probably my enclosure is also not completely following specs,
but Linux is ignoring the hint as well....
On hitting a bad block, the disk reports error. The USB converter
then reports "auto-sense-required", and this is carried out. However
at this point, my USB enclosure returns all-zeroes. This is
considered non-fatal by the kernel.
I'm guessing not many people are testing these things with
bad drives. So, I don't know wether or not other USB converters
handle this situation more gracefully.
As a patch, I've decided to set the sense key to "vendor specific"
(9), and then no "additional sense" (0:0), if, and only if the device
didn't return any valid sense info.
The rest of the kernel then correctly interprets the situation
as an IO error.
Roger Wolff.
--- linux-2.6.20.3.clean/drivers/usb/storage/transport.c 2007-03-13
19:27:08.000000000 +0100
+++ linux-2.6.20.3.kostunrix/drivers/usb/storage/transport.c 2007-08-16
16:47:00.000000000 +0200
@@ -629,6 +629,14 @@
/* let's clean up right away */
memcpy(srb->sense_buffer, us->sensebuf, US_SENSE_SIZE);
+ if (((srb->sense_buffer[2]&0xf) == 0) &&
+ (srb->sense_buffer[12] == 0) &&
+ (srb->sense_buffer[13] == 0)) {
+ /* Hmmmmm. The device requested sense, but then
+ declined to give us more info.... -- REW */
+ srb->sense_buffer[2] |= 0x09; /* Vendor specific */
+ }
+
srb->resid = old_resid;
srb->request_buffer = old_request_buffer;
srb->request_bufflen = old_request_bufflen;
--
** [EMAIL PROTECTED] ** http://www.BitWizard.nl/ ** +31-15-2600998 **
** Delftechpark 26 2628 XH Delft, The Netherlands. KVK: 27239233 **
*-- BitWizard writes Linux device drivers for any device you may have! --*
Q: It doesn't work. A: Look buddy, doesn't work is an ambiguous statement.
Does it sit on the couch all day? Is it unemployed? Please be specific!
Define 'it' and what it isn't doing. --------- Adapted from lxrbot FAQ
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html