I have a SanDisk Extreme USB Flash Drive
(http://www.sandisk.com/products/usb/drives/extreme/), which does NOT
support UASP so is running under "usb-storage".

According to `hdparm`, it seems to supports TRIM; and according to
`sg3_opcodes`, it seems to support ATA Pass-Through (12/16). However,
all TRIM/DISCARD related ioctl doesn't work with it at all.

So my question is, is TRIM/DISCARD possible at all in linux for usb
drives? If so, what are the requirements? If not, is it just not
implemented yet or an inherit problem of usb which cannot be fixed?

P.S. Although there's an SG_IO error, ATA Secure Erase seems to works
according to hexdump, and the drive is NOT bricked after many trials.

[tom@localhost ~]$ sudo blkdiscard /dev/sdc
blkdiscard: /dev/sdc: BLKDISCARD ioctl failed: Operation not supported
[tom@localhost ~]$ sudo blkdiscard -s /dev/sdc
blkdiscard: /dev/sdc: BLKSECDISCARD ioctl failed: Operation not supported
[tom@localhost ~]$ sudo mount /dev/sdc1 /mnt/
[tom@localhost ~]$ sudo fstrim /mnt/
fstrim: /mnt/: the discard operation is not supported
[tom@localhost ~]$ sudo hdparm -I /dev/sdc

/dev/sdc:

ATA device, with non-removable media
    Model Number:       SanDisk pSSD
    Serial Number:      0a1e4434c
    Firmware Revision:  3
    Transport:          Serial, ATA8-AST, SATA Rev 2.6
Standards:
    Used: ATA-8-ACS revision 2d
    Supported: 8 7 6 5
Configuration:
    Logical        max    current
    cylinders    16383    16383
    heads        16    16
    sectors/track    63    63
    --
    CHS current addressable sectors:   16514064
    LBA    user addressable sectors:   61282631
    LBA48  user addressable sectors:   61282631
    Logical  Sector size:                   512 bytes
    Physical Sector size:                   512 bytes
    device size with M = 1024*1024:       29923 MBytes
    device size with M = 1000*1000:       31376 MBytes (31 GB)
    cache/buffer size  = unknown
    Form Factor: 1.8 inch
    Nominal Media Rotation Rate: Solid State Device
Capabilities:
    LBA, IORDY(can be disabled)
    Queue depth: 32
    Standby timer values: spec'd by Standard, no device specific minimum
    R/W multiple sector transfer: Max = 1    Current = 1
    Advanced power management level: disabled
    DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
         Cycle time: min=120ns recommended=120ns
    PIO: pio0 pio1 pio2 pio3 pio4
         Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
    Enabled    Supported:
       *    SMART feature set
            Security Mode feature set
       *    Power Management feature set
            Write cache
            Look-ahead
       *    Host Protected Area feature set
       *    WRITE_BUFFER command
       *    READ_BUFFER command
       *    NOP cmd
       *    DOWNLOAD_MICROCODE
            Advanced Power Management feature set
       *    48-bit Address feature set
       *    Device Configuration Overlay feature set
       *    Mandatory FLUSH_CACHE
       *    FLUSH_CACHE_EXT
       *    SMART error logging
       *    SMART self-test
       *    General Purpose Logging feature set
       *    WRITE_{DMA|MULTIPLE}_FUA_EXT
       *    64-bit World wide name
       *    WRITE_UNCORRECTABLE_EXT command
       *    Segmented DOWNLOAD_MICROCODE
       *    Gen1 signaling speed (1.5Gb/s)
       *    Gen2 signaling speed (3.0Gb/s)
       *    Gen3 signaling speed (6.0Gb/s)
       *    Native Command Queueing (NCQ)
       *    Software settings preservation
       *    DEVICE CONFIGURATION SET/IDENTIFY DMA commands
       *    Data Set Management TRIM supported (limit 8 blocks)
       *    Deterministic read ZEROs after TRIM
Security:
    Master password revision code = 65534
        supported
    not    enabled
    not    locked
    not    frozen
    not    expired: security count
    not    supported: enhanced erase
    2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5001b400e4a14c43
    NAA        : 5
    IEEE OUI    : 001b40
    Unique ID    : 0e4a14c43
Checksum: correct
[tom@localhost ~]$ sudo sg_opcodes /dev/sdc
  SanDisk   Extreme           0001
  Peripheral device type: disk

Opcode  Service    CDB    Name
(hex)   action(h)  size
-----------------------------------------------
 00                  6    Test Unit Ready
 03                  6    Request Sense
 04                  6    Format Unit
 08                  6    Read(6)
 0a                  6    Write(6)
 12                  6    Inquiry
 15                  6    Mode select(6)
 1a                  6    Mode sense(6)
 1b                  6    Start stop unit
 1d                  6    Send diagnostic
 1e                  6    Prevent allow medium removal
 23                 10    Read Format capacities
 25                 10    Read capacity(10)
 28                 10    Read(10)
 2a                 10    Write(10)
 2f                 10    Verify(10)
 35                 10    Synchronize cache(10)
 3b                 10    Write buffer
 3c                 10    Read buffer
 43                 10    Read TOC/PMA/ATIP
 55                 10    Mode select(10)
 5a                 10    Mode sense(10)
 85                 16    ATA pass-through(16)
 88                 16    Read(16)
 8a                 16    Write(16)
 8f                 16    Verify(16)
 91                 16    Synchronize cache(16)
 9e       10        16    Read capacity(16)
 a0                 12    Report luns
 a1                 12    ATA pass-through(12)
 a2                 12    Security protocol in
 a3        c        12    Report supported operation codes
 a8                 12    Read(12)
 aa                 12    Write(12)
 af                 12    Verify(12)

[tom@localhost ~]$ sudo hdparm --security-set-pass wipe /dev/sdc
security_password: "wipe"

/dev/sdc:
 Issuing SECURITY_SET_PASS command, password="wipe", user=user, mode=high
[tom@localhost ~]$ sudo hdparm --security-erase wipe /dev/sdc
security_password: "wipe"

/dev/sdc:
 Issuing SECURITY_ERASE command, password="wipe", user=user
SG_IO: bad/missing sense data, sb[]:  f0 00 01 00 50 40 00 0a 00 00 00
00 00 1d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to