TRIM is accessible via "hdparm --trim-sector-ranges" on a USB device supporting ATA PASS THROUGH:
Device is an SSD in a USB 3.0 adapter identified in lshw as follows: Bus 001 Device 005: ID 174c:55aa ASMedia Technology Inc. ASMedia 2105 SATA bridge Adapter is hosting a 180GB Intel 530 M.2 NGFF SSD fstrim fails as described with "FITRIM ioctl failed: Operation not supported" even though the hdparm invocation works fine. I've tested full ext4 filesystem trims using wiper.sh, the utility by Mark Lord that was bundled for a while with hdparm until fstrim came out. This utility works by wrapping the hdparm invocation. So it definitely seems to be the case that the USB driver stack is declining to implement TRIM even in cases where it is technically able to do so. Given the extremely high performance of USB3+, it seems very likely that USB-connected SSDs will become increasingly usual. -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1336541 Title: No TRIM via USB Status in linux package in Ubuntu: Confirmed Bug description: Hi, As USB attached SSDs are becoming quite big and affordable, along comes the idea of installing systems on these. But with current USB drivers, some functionality seems to be missing from USB subsystem. The system does not recognize it is an SSD, but it is corrected manually: # cat /etc/udev/rules.d/10-forcessd.rules SUBSYSTEM=="block", ATTRS{vendor}=="SanDisk", ATTRS{model}=="Extreme", KERNEL=="sd?", ATTR{queue/rotational}="0" # cat /sys/block/sdb/queue/rotational 0 Checked hdparm, it is saying I have TRIM on the device: # hdparm -I /dev/sdb /dev/sdb: ATA device, with non-removable media Model Number: SanDisk pSSD (...) Commands/features: Enabled Supported: (...) * Data Set Management TRIM supported (limit 8 blocks) * Deterministic read ZEROs after TRIM (...) Here is appropriate dmesg: [ 3.815604] usb 2-8: Manufacturer: SunplusIT INC. [ 4.122002] usb 3-3: new SuperSpeed USB device number 2 using xhci_hcd [ 4.138402] usb 3-3: New USB device found, idVendor=0781, idProduct=5580 [ 4.138404] usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 4.138405] usb 3-3: Product: Extreme [ 4.138406] usb 3-3: Manufacturer: SanDisk [ 4.138407] usb 3-3: SerialNumber: AA011109131654094942 [ 4.141393] usb-storage 3-3:1.0: USB Mass Storage device detected [ 4.141431] scsi0 : usb-storage 3-3:1.0 [ 4.141703] usbcore: registered new interface driver usb-storage And: [ 5.331311] sd 0:0:0:0: [sdb] 122544516 512-byte logical blocks: (62.7 GB/58.4 GiB) [ 5.331608] sd 0:0:0:0: [sdb] Write Protect is off [ 5.331611] sd 0:0:0:0: [sdb] Mode Sense: 33 00 00 08 [ 5.331855] sd 0:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA [ 5.339849] sdb: sdb1 sdb2 sdb3 < sdb5 > [ 5.340783] sd 0:0:0:0: [sdb] Attached SCSI disk From here I'll be using /boot formatted to ext4 to eliminate luks,lvm and btrfs from the equasion: # mount |grep sdb2 /dev/sdb2 on /boot type ext4 (rw,noexec,discard) # fstrim -v /boot/ fstrim: /boot/: FITRIM ioctl failed: Operation not supported # strace fstrim -v /boot/ (...) open("/boot/", O_RDONLY) = 3 ioctl(3, FITRIM, 0x7fffdded85c0) = -1 EOPNOTSUPP (Operation not supported) (...) During debugging, I've tried compiling a kernel with UAS module to check, it booted, system was g changed with the trim - as it wouldn't been used at all. Any ideas why TRIM is not working on USB? Any timeframes for possible fix? Any workarounds maybe? --- ApportVersion: 2.14.1-0ubuntu3.2 Architecture: amd64 AudioDevicesInUse: USER PID ACCESS COMMAND /dev/snd/controlC1: dome 2460 F.... pulseaudio /dev/snd/pcmC1D0p: dome 2460 F...m pulseaudio /dev/snd/controlC0: dome 2460 F.... pulseaudio DistroRelease: Ubuntu 14.04 HibernationDevice: RESUME=UUID=bafebd1d-6988-438f-afd4-b41bb8608616 InstallationDate: Installed on 2014-06-12 (56 days ago) InstallationMedia: Ubuntu 14.04 LTS "Trusty Tahr" - Release amd64 (20140417) MachineType: LENOVO 20AR001AUK Package: linux (not installed) ProcEnviron: LANGUAGE=en_US TERM=xterm PATH=(custom, no user) LANG=en_US.UTF-8 SHELL=/bin/bash ProcFB: 0 inteldrmfb ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-3.13.0-24-generic root=/dev/mapper/system-root ro rootflags=subvol=@ cryptopts=target=crypter,source=/dev/disk/by-uuid/dc149cdf-62f9-4e29-a048-dd0403f51d56,lvm=system,discard quiet splash crashkernel=384M-:128M vt.handoff=7 ProcVersionSignature: Ubuntu 3.13.0-24.47-generic 3.13.9 PulseList: Error: command ['pacmd', 'list'] failed with exit code 1: Home directory not accessible: Permission denied No PulseAudio daemon running, or not running as session daemon. RelatedPackageVersions: linux-restricted-modules-3.13.0-24-generic N/A linux-backports-modules-3.13.0-24-generic N/A linux-firmware 1.127.5 Tags: trusty Uname: Linux 3.13.0-24-generic x86_64 UpgradeStatus: No upgrade log present (probably fresh install) UserGroups: _MarkForUpload: True dmi.bios.date: 03/28/2014 dmi.bios.vendor: LENOVO dmi.bios.version: GJET75WW (2.25 ) dmi.board.asset.tag: Not Available dmi.board.name: 20AR001AUK dmi.board.vendor: LENOVO dmi.board.version: 0B98401 PRO dmi.chassis.asset.tag: No Asset Information dmi.chassis.type: 10 dmi.chassis.vendor: LENOVO dmi.chassis.version: Not Available dmi.modalias: dmi:bvnLENOVO:bvrGJET75WW(2.25):bd03/28/2014:svnLENOVO:pn20AR001AUK:pvrThinkPadT440s:rvnLENOVO:rn20AR001AUK:rvr0B98401PRO:cvnLENOVO:ct10:cvrNotAvailable: dmi.product.name: 20AR001AUK dmi.product.version: ThinkPad T440s dmi.sys.vendor: LENOVO To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1336541/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp