TRIM support for UFS?

Julian Elischer julian at
Fri Dec 10 05:19:57 UTC 2010

On 12/9/10 4:58 PM, Pawel Jakub Dawidek wrote:
> On Thu, Dec 09, 2010 at 04:37:48PM -0800, Bakul Shah wrote:
>> On Thu, 09 Dec 2010 10:13:39 PST Kirk McKusick<mckusick at>   wrote:
>>> Other than the nit pointed out by Pawel, the diffs look good to me.
>>> You should consider adding the -t option to newfs so that the TRIM
>>> option can be specified at the time the filesystem is created (as
>>> a general rule, anything you can do with tunefs should also be
>>> possible with newfs).
>>> I agree with your decision to let administrators opt-out of doing
>>> TRIM. If experience shows it to be generally useful to have it on,
>>> we can change the default to enabled later. If we do change the
>>> default to enabled, then we will want to delete the warning about TRIM
>>> not being supported by the underlying disk that you added at mount
>>> time as we would start getting a lot of them for all the non-SSD disks.
>> Would be nice if something like ftrim(fd, offset, size) or
>> trim(path, offsetm size) or TRIM file ioctl is added, to free
>> up blocks undelying a given range in a file.  ftruncate can
>> delete blocks at the end but there is no facility to lose
>> blocks in the middle.  Mainly handy for virtual disks and
>> databases (and would work nicely with SEEK_DATA, SEEK_HOLE).
> libgeom(3) provides:
> 	int g_delete(int fd, off_t offset, off_t length);
One of the things that has not been mentioned is that trim is not 
really 'free'
(at least not for us) if you want things to remain trimmed after a reboot.
so if I were implementing it I'd want a couple of parameters.

1/ don't bother trimming free space under some size.
2/ does it matter if the trimmed space comes back as garbage
after an unclean shutdown? (a hint to the driver, and no, I don't
know anyone that supports this yet)
(there are security implications to that one but cheap trim (that
may come back) is way cheaper than persistent trim to impliment).

with these parameters we (fusion-io) could tune our behaviour  which 
can save
performance, and also the file system could tune it's min-trim value to
see what gives best performance.

More information about the freebsd-fs mailing list