Activer le trim sur SSD avec un boîtier USB 3.1 utilisant un chip ASMedia

Boîtier UGREEN 20743 apparemment basé sur chip ASM235CM

Many thanks to https://bbs.archlinux.org/viewtopic.php?pid=1794547#p1794547 and https://www.dpreview.com/forums/post/56467285 !

# dmesg|egrep "4-1|uas|sdb"
...
[90539.110843] usb 4-1: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd
[90539.129181] usb 4-1: New USB device found, idVendor=174c, idProduct=55aa, bcdDevice= 1.00
[90539.129190] usb 4-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1
[90539.129193] usb 4-1: Product: Ugreen Storage Device
[90539.129196] usb 4-1: Manufacturer: Ugreen
[90539.129198] usb 4-1: SerialNumber: 123458C7A9CB
[90539.143154] scsi host6: uas
[90539.146079] sd 6:0:0:0: [sdb] 500118192 512-byte logical blocks: (256 GB/238 GiB)
[90539.146222] sd 6:0:0:0: [sdb] Write Protect is off
[90539.146226] sd 6:0:0:0: [sdb] Mode Sense: 43 00 00 00
[90539.146432] sd 6:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[90539.147271] sd 6:0:0:0: [sdb] Optimal transfer size 33553920 bytes
[90539.151183]  sdb: sdb1
[90539.152617] sd 6:0:0:0: [sdb] Attached SCSI disk
...

# lsusb | grep -i asmedia
Bus 004 Device 004: ID 174c:55aa ASMedia Technology Inc. Name: ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge

# hdparm -I /dev/sdb | grep -i TRIM
	   *	Data Set Management TRIM supported (limit 16 blocks)
	   *	Deterministic read ZEROs after TRIM

# lsblk  -D
NAME                                DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
...
sdb                                        0        0B       0B         0
└─sdb1                                     0        0B       0B         0

# sg_readcap -l /dev/sdb|grep -i lb
   Logical block provisioning: lbpme=0, lbprz=0

# sg_vpd -a /dev/sdb |grep -i unmap
  Maximum unmap LBA count: 4194240
  Maximum unmap block descriptor count: 1
  Optimal unmap granularity: 1
  Unmap granularity alignment valid: 0
  Unmap granularity alignment: 0
  Unmap command supported (LBPU): 1
  Write same (16) with unmap bit supported (LBWS): 0
  Write same (10) with unmap bit supported (LBWS10): 0

# vi /etc/udev/rules.d/99-persistent-asm1051e.rules
ACTION=="add|change", ATTRS{idVendor}=="174c", ATTRS{idProduct}=="55aa", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"

# udevadm control --reload-rules

# lsblk  -D
NAME                                DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
...
sdb                                        0      512B       4G         0
└─sdb1                                     0      512B       4G         0