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

Mark Lord
2009-08-14T22:10:39Z

Bryan Donlan wrote:
..
> Perhaps an interface (ioctl, etc) can be added to ask a filesystem to
> discard all unused blocks in a certain range? (That is, have the
> filesystem validate the request under any necessary locks before
> passing it to the block IO layer)
..

While possibly TRIM-specific, this approach has the lowest overhead
and probably the greatest gain-for-pain ratio.

But it may not be as nice for enterprise (?).

On the Indilinx-based SSDs (eg. OCZ Vertex), TRIM seems to trigger an
internal garbage-collection/erase cycle. As such, the drive really prefers
a few LARGE trim lists, rather than many smaller ones.

Here's some information that a vendor has observed from the Win7 use of TRIM:

> TRIM command is sent:
> - About 2/3 of partition is filled up, when file is deleted.
> (I am not talking about send file to trash bin.)
> - In the above case, when trash bin gets emptied.
> - In the above case, when partition is deleted.
>
> TRIM command is not sent:-
> - When file is moved to trash bin
> - When partition is formatted. (Both quick and full format)
> - When empty partition is deleted
> - When file is deleted while there is big remaining free space
..

His words, not mine. But the idea seems to be to batch them in large chunks.

My wiper.sh "trim script" is packaged with the latest hdparm (currently 9.24)
on sourceforge, for those who want to try this stuff for real. No special
kernel support is required to use it.

Cheers

Mark