Re: [PATCH 1/2] fs: Do not dispatch FITRIM through separate super_operation

Martin K. Petersen
2010-11-18T23:54:03Z

>>>>> "Mark" == Mark Lord <kernel@teksavvy.com> writes:

>> 2) FITRIM doesn't leverage the fact the a TRIM command can handle
>> multiple ranges per TRIM command payload. I haven't seen any FITRIM
>> vs. wiper.sh benchmarks, so I don't know what impact that has in
>> practice. Mark Lord thought that this lacking feature would cause
>> FITRIM to take minutes or hours with some hardware. Especially early
>> generation SSDs.

Mark> If FITRIM is still issuing single-range-at-a-time TRIMs, then I'd
Mark> call that a BUG that needs fixing. Doing TRIM like that causes
Mark> tons of unnecessary ERASE cycles, shortening the SSD lifetime. It
Mark> really needs to batch them into groups of (up to) 64 ranges at a
Mark> time (64 ranges fits into a single 512-byte parameter block).

We don't support coalescing discontiguous requests into one command. But
we will issue contiguous TRIM requests as big as the payload can
handle. That's just short of two gigs per command given a 512-byte
block.

I spent quite a bit of time trying to make coalescing work in the
spring. It got very big and unwieldy. When we discussed it at the
filesystem summit the consensus was that it was too intrusive to the I/O
stack, elevators, etc.

I have previously posted a list of reasons why it is hard to support
given how our I/O stack works. I can dig them out if there's interest.

--
Martin K. Petersen Oracle Linux Engineering