Re: 3TB Hard Drive in USB Enclosure Resetting

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 7 Nov 2012, Jason J. Herne wrote:

>>> Most likely that's the answer.  Of course, for a device to recognize
>>> READ(16) but not READ(10) is a violation of the SCSI spec.
>>>

I can confirm that the use of READ(10) instead of READ(16) is indeed
the problem here.
I hacked in some code that forces a READ(16) for all usb-storage
devices and the 3TB
drive's partitions were read and even auto-mounted.  I did not try any writes.

>> I've not had enough time to properly find where/how to fix/hack this
>> into the code.

> It won't be simple.  The current algorithm has been working for a long
> time, so people won't want to change it.

How about a new bit in struct scsi_device, read10_invalid perhaps?
An indicator that the device doesn't work with READ(10)?  We can set
or not set the device at probe time based on vedor/device ids.
In sd_prep_fn this:

} else if (block > 0xffffffff) {
becomes:
} else if (block > 0xffffffff || SCpnt->device->read10_invalid) {

Although I'm not sure if we should be enabling this bit based on the
controller in
use in the enclosure, or the drive, or the combination?
READ(10) worked with the enclosure & 1.5 TB drive.
READ(10) failed with the enclosure & 3 TB drive.
3 TB drive works connected to Sata port (not sure if it is using
READ(10) or READ(16)).
I know we get to sd_prep_fn even when the drive in connected directly
via Sata, just not
sure which READ is used. I could find this out with a simple test.


--
- Jason J. Herne (hernejj@xxxxxxxxx)
--
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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux