Re: about TRIM/DISCARD support and barriers

Dongjun Shin
2008-11-24T05:40:40Z

On Sun, Nov 23, 2008 at 4:57 PM, Tejun Heo <teheo@suse.de> wrote:
> Tejun Heo wrote:
>> Dongjun, the only doc I can find about ATA TRIM is the following one.
>>
>> http://t13.org/Documents/UploadedDocuments/docs2007/e07154r3-Data_Set_Management_Proposal_for_ATA-ACS2.pdf
>>
>> And AFAICS this hasn't made into ACS yet. Is this what you guys are
>> gonna implement and Windows7 is gonna use?
>

Sorry, I thought the trim spec has got into the final ACS, but it's not yet.
Microsoft can collaborate with SSD vendors for their internal evaluation &
feedback for Win7(with NDA between them, of course).

> Just went over it. Matthew, if ATA trim is gonna be implemented as
> described in the above document, it will support multiple ranges per
> command.
>
> Dongjun, the above document strikes out all the latency/performance
> related stuff, which looks like the right move to me. Most of those
> information can be extracted from access pattern by the device itself
> and exposing such optimization parameters to outside seldom works well.
> I'm fairly sure such over complexity will end up being
> counter-optimization due to different interpretations and executions by
> different parties (be it harddrive vendors or different filesystems).
>
> So, can you please confirm that, what we eventually get is simple TRIM
> w/ multiple ranges? Which, BTW, makes sense as it's something the
> device can't infer from the access pattern. Also, if there still is
> wiggle room, what would be a worthy optimization is to allow TRIM
> commands to be sent together with other NCQ commands as otherwise the
> drive will have to drain all other commands to process a TRIM command
> which will be inefficient.
>

AFAIK, only the trim feature of data set management command will be included
and a single trim may contain multiple ranges. But, it's not possible to send
non-read/write command during NCQ as specified by the t13(1).

--
Dongjun

(1) In 4.15 of ATA8-ACS,
"If the device receives a command that is not an NCQ command while NCQ commands
are in the queue, then the device shall return command aborted for the
new command
and for all of the NCQ commands that are in thequeue."