Re: Discard support (was Re: [PATCH] swap: send callback when swap slot is freed)

jim owens
2009-08-17T17:37:36Z

Bill Davidsen wrote:
> jim owens wrote:
>> Bill Davidsen wrote:
>>>
>>> I assume that it really is artificial, rather than the device really
>>> being ready for another operation (other than another TRIM). I lack
>>> the hardware, but the test would be the time to complete a read, trim
>>> and read, and two trim and read operations. Just my thought that the
>>> TRIM in progress may only block the next TRIM, rather than other
>>> operations.
>>
>> I don't know his test sequence but READ is not the likely command
>> before and after TRIM unless we are talking about TRIM being issued
>> only in delayed host garbage collection. Filesystems send WRITES
>> during delete.
>
> My idea is to test using a command which will definitely not need to
> prepare the media before completion, thus read. If TRIM doesn't block
> reads, then NCQ may allow reads to take place. Because of buffering slow
> reads hurt more than slow writes in terms of user perception.
>

The filesystem must send at least one unbuffered synchronous write
before it can send a trim for those blocks so the drive will not
release the blocks until we are certain they will not be needed again.

AKA the metadata consistency problem for crash recovery.

So non-delayed trim must at least be preceded by a write, but you
are correct that reads could be after the trim if the filesystem
does not have a multi-stage delete that requires a second synchronous
write, or if the trim can be held until all filesystem writes occur.

How hard it will be to "send the trim last" will be different for
each filesystem and some developers are already working on that.

jim