Re: TRIM/UNMAP/DISCARD via ATA Passthrough

From: Austin S. Hemmelgarn
Date: Fri Sep 16 2016 - 11:54:30 EST

On 2016-09-16 07:16, Hannes Reinecke wrote:
On 09/15/2016 10:52 PM, Jason A. Donenfeld wrote:
Hi Martin,

On Thu, Sep 15, 2016 at 6:07 PM, Martin K. Petersen
But how do they signal that ATA passthrough is possible? Is there an ATA
Information VPD page? Is REPORT SUPPORTED OPERATION CODES supported?

We need really solid discovery data before we can entertain enabling
something like this.

`sg_opcodes` said invalid request, so I think there isn't REPORT
SUPPORTED OPERATION CODES, and `sg_vpd -p ai` came up illegal too.

However, sg_sat_identify worked reliably, which means a solid way of
probing this would be to send IDENTIFY DEVICE ATA via SG_ATA_16 or

Let me know and I can give you access to the hardware if you're curious.

Sadly, that's not sufficient.
linux is not the only provider of an SATL (mpt3sas being the most
prominent other one).
And while they might support ATA_12/ATA_16, there is no indication that
you can pass DSM TRIM that way.
So it's better to not support it at all than to support it on hardware we can reliably identify?

I get that having feature parity is a good thing, but the discussion isn't about providing support for all SATL devices, it's specifically about UAS connected SATL devices. Last I checked, mpt3sas doesn't do anything with UAS, which means it's kind of irrelevant WRT supporting this for UAS devices.

It's pretty easy to tell that something is a UAS device (the uas driver wouldn't be bound to it otherwise), so if we check that and then check whether or not IDENTIFY DEVICE ATA works when sent via SG_ATA_16 or SG_ATA_12, it should be relatively safe (ignoring of course the fact that there will inevitably be some brain-dead hardware that for some obscure reason translates the command into something that will corrupt data). I've got three USB 3.0 UAS SATA adapters (all ASMedia branded chips) that behave pretty much identically to what Jason is describing, so it appears that at least one brand behaves this way in a reliable and reproducible manner.