Re: [PATCH] usb-storage: Ignore UAS for LaCie Rugged FW USB3

Julian Sikorski
2024-02-13T13:06:43Z

Am 10.02.24 um 22:43 schrieb Julian Sikorski:
> Am 10.02.24 um 22:35 schrieb Julian Sikorski:
>> Am 10.02.24 um 15:21 schrieb Julian Sikorski:
>>> Am 10.02.24 um 14:24 schrieb Tasos Sahanidis:
>>>> On 2024-02-09 17:31, Alan Stern wrote:
>>>>> On Fri, Feb 09, 2024 at 05:11:21PM +0200, Tasos Sahanidis wrote:
>>>>>> This external HDD fails when plugged in to a USB 3 port. Ignoring
>>>>>> UAS and
>>>>>> falling back to mass storage resolves this issue.
>>>>>
>>>>> What happens when it is plugged into a USB-2 port?
>>>>
>>>> It works without any quirks over USB 2.0 with uas, however asking for
>>>> cache data fails gracefully.
>>>>
>>>> [  520.829840] scsi host4: uas
>>>> [  521.024643] scsi 4:0:0:0: Direct-Access     LaCie    Rugged FW
>>>> USB3   1081 PQ: 0 ANSI: 4
>>>> [  521.026370] sd 4:0:0:0: Attached scsi generic sg2 type 0
>>>> [  521.030096] sd 4:0:0:0: [sdc] 976773153 512-byte logical blocks:
>>>> (500 GB/466 GiB)
>>>> [  521.030369] sd 4:0:0:0: [sdc] Write Protect is off
>>>> [  521.030373] sd 4:0:0:0: [sdc] Mode Sense: 47 00 10 08
>>>> [  521.030507] sd 4:0:0:0: [sdc] Asking for cache data failed
>>>> [  521.030512] sd 4:0:0:0: [sdc] Assuming drive cache: write through
>>>> [  521.065916]  sdc: sdc1
>>>> [  521.067783] sd 4:0:0:0: [sdc] Attached SCSI disk
>>>> [  521.699380] EXT4-fs (sdc1): recovery complete
>>>> [  521.699388] EXT4-fs (sdc1): mounted filesystem with ordered data
>>>> mode. Opts: errors=remount-ro. Quota mode: none.
>>>>
>>>>> Have you checked to see if any of the quirk flags can prevent this
>>>>> problem?  It looks like the only issue might be that one Mode Sense(6)
>>>>> command.
>>>>
>>>> I have tried various combinations of all the available quirks and I
>>>> couldn't get it to not hang. Without any quirks it keeps retrying Mode
>>>> Sense(6) constantly.
>>>>
>>>> I tested US_FL_ALWAYS_SYNC as it sets sdev->skip_ms_page_8 (both with
>>>> and without US_FL_NO_REPORT_OPCODES | US_FL_NO_SAME), and it hung at an
>>>> ATA passthrough command; presumably the next step afterwards.
>>>>
>>>> 30 seconds and one USB reset later, the disk is recognised, but I
>>>> do not know if it is reliable.
>>>>
>>>> [  329.161316] scsi 4:0:0:0: Direct-Access     LaCie    Rugged FW
>>>> USB3   1081 PQ: 0 ANSI: 4
>>>> [  329.162228] sd 4:0:0:0: Attached scsi generic sg2 type 0
>>>> [  329.166650] sd 4:0:0:0: [sdc] 976773153 512-byte logical blocks:
>>>> (500 GB/466 GiB)
>>>> [  329.166654] sd 4:0:0:0: [sdc] Assuming Write Enabled
>>>> [  329.166655] sd 4:0:0:0: [sdc] Assuming drive cache: write back
>>>> [  329.197983]  sdc: sdc1
>>>> [  329.198521] sd 4:0:0:0: [sdc] Attached SCSI disk
>>>> [  359.553806] sd 4:0:0:0: [sdc] tag#3 uas_eh_abort_handler 0
>>>> uas-tag 1 inflight: IN
>>>> [  359.553816] sd 4:0:0:0: [sdc] tag#3 CDB: ATA command pass
>>>> through(12)/Blank a1 08 2e 00 01 00 00 00 00 ec 00 00
>>>> [  359.573771] scsi host4: uas_eh_device_reset_handler start
>>>> [  359.702116] usb 3-1: reset SuperSpeed USB device number 3 using
>>>> xhci_hcd
>>>> [  359.722068] usb 3-1: LPM exit latency is zeroed, disabling LPM.
>>>> [  359.724348] scsi host4: uas_eh_device_reset_handler success
>>>> [  360.582975] EXT4-fs (sdc1): recovery complete
>>>> [  360.633098] EXT4-fs (sdc1): mounted filesystem with ordered data
>>>> mode. Opts: errors=remount-ro. Quota mode: none.
>>>>
>>>> My assumption is that something goes wrong during init and that
>>>> makes it
>>>> hang in general. Perhaps the Mode Sense(6) is broken in addition to
>>>> whatever else is misbehaving. I don't believe the XHCI controller is at
>>>> fault.
>>>>
>>>>> Falling back from uas to usb-storage could reduce the throughput
>>>>> considerably.  We would like to avoid doing this if possible.
>>>>
>>>> Absolutely, but at the same time I am not sure how much it matters for
>>>> an old mechanical hard disk. Granted, someone can use the same
>>>> enclosure
>>>> and install an SSD internally, so perhaps that makes it worth it.
>>>>
>>>> Thanks
>>>>
>>>> --
>>>> Tasos
>>>>
>>>>
>>>>
>>> This seems to be similar to the issue I am facing with a similar
>>> LaCie Rugged USB3-FW 059f:1061. Initially we patched it to IGNORE_UAS
>>> but it then turned out to be working with US_FL_NO_REPORT_OPCODES and
>>> US_FL_NO_SAME. This was back in September 2021. In August 2023 I
>>> reported a similar issue as you, I am still seeing it in 6.7.3. The
>>> good news is that after initial problems it seems to be working fine
>>> once the USB connection is established.
>>
>> I have now narrowed it down to having broken between 5.18.19 and
>> 5.19.4 kernels. Tasos, if you are interested, you might want to check
>> if you can get the drive working with US_FL_NO_REPORT_OPCODES and
>> US_FL_NO_SAME alone (fk) quirks alone on 36 live, which ships 5.17.5
>> kernel. Exercise caution as it is an EOL system.
>> I will see if I can narrow down the regression further.
>>
>> Best regards,
>> Julian
>>
> Oddly enough, with 5.19.4 the device starts working after one reset
> instead of after four:
>
> Feb 10 22:36:56 kernel: usb 2-4: new SuperSpeed USB device number 3
> using xhci_hcd
> Feb 10 22:36:56 kernel: usb 2-4: New USB device found, idVendor=059f,
> idProduct=1061, bcdDevice= 0.01
> Feb 10 22:36:56 kernel: usb 2-4: New USB device strings: Mfr=2,
> Product=3, SerialNumber=1
> Feb 10 22:36:56 kernel: usb 2-4: Product: Rugged USB3-FW
> Feb 10 22:36:56 kernel: usb 2-4: Manufacturer: LaCie
> Feb 10 22:36:56 kernel: usb 2-4: SerialNumber: 00000000157f928920fa
> Feb 10 22:36:56 kernel: scsi host6: uas
> Feb 10 22:36:56 kernel: scsi 6:0:0:0: Direct-Access     LaCie    Rugged
> FW USB3   051E PQ: 0 ANSI: 6
> Feb 10 22:36:56 kernel: sd 6:0:0:0: Attached scsi generic sg1 type 0
> Feb 10 22:36:56 kernel: sd 6:0:0:0: [sda] 1953525168 512-byte logical
> blocks: (1.00 TB/932 GiB)
> Feb 10 22:36:56 kernel: sd 6:0:0:0: [sda] Write Protect is off
> Feb 10 22:36:56 kernel: sd 6:0:0:0: [sda] Mode Sense: 43 00 00 00
> Feb 10 22:36:56 kernel: sd 6:0:0:0: [sda] Write cache: enabled, read
> cache: enabled, doesn't support DPO or FUA
> Feb 10 22:36:56 kernel: sd 6:0:0:0: [sda] Preferred minimum I/O size 512
> bytes
> Feb 10 22:36:56 kernel: sd 6:0:0:0: [sda] Optimal transfer size 33553920
> bytes
> Feb 10 22:37:26 kernel: sd 6:0:0:0: [sda] tag#23 uas_eh_abort_handler 0
> uas-tag 1 inflight: IN
> Feb 10 22:37:26 kernel: sd 6:0:0:0: [sda] tag#23 CDB: Inquiry 12 01 b9
> 00 04 00
> Feb 10 22:37:26 kernel: scsi host6: uas_eh_device_reset_handler start
> Feb 10 22:37:26 kernel: usb 2-4: reset SuperSpeed USB device number 3
> using xhci_hcd
> Feb 10 22:37:26 kernel: scsi host6: uas_eh_device_reset_handler success
> Feb 10 22:37:26 kernel:  sda: sda1 sda2
> Feb 10 22:37:26 kernel: sd 6:0:0:0: [sda] Attached SCSI disk
>
> Further bisecting is going to be difficult as there are no built kernels
> left. I will see if the time effort is manageable.
>
> Best regards,
> Julian

So I have good news and bad news. The good news is that I have managed
to bisect the issue down to commit

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c92a6b5d6335

With c92a6b5d6335 and with e60ac0b9e445, the drive requires multiple
resets in the VM. With 7fb019c46eee onwards, it only requires one reset.
The bad news is that I am not able to fix it with BLIST_NO_VPD_SIZE:

$ echo "LaCie:Rugged FW USB3:0x2000" | sudo tee /proc/scsi/device_info

This is despite this being used to fix problems with some other devices:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b1a2c2a8e0ddcb89c5f6c5003bd9b53142f69e3

I am cross-posting this to scsi list, maybe someone there would be able
to understand what is going on.
Out of interest, why is the device called "Rugged FW USB3" by scsi but
"Rugged USB3-FW" by usb?

Best regards,
Julian