# TRIM support on UFS2 FreeBSD 9



## alie (Nov 29, 2011)

Do we have TRIM support on UFS2 FreeBSD 9?


----------



## SirDice (Nov 29, 2011)

8.1 Release notes:


> The ada(4) driver now supports BIO_DELETE. For SSDs this uses TRIM feature of DATA SET MANAGEMENT command, as defined by ACS-2 specification working draft. For Compact Flash use CFA ERASE command, same as ad(4) does. This change realizes restoring write speed of SSDs which supports TRIM command by doing newfs -E /dev/ada1, for example.



http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/ufs/ffs/ffs_alloc.c#rev1.153.2.4


----------



## alie (Nov 29, 2011)

I am not so familiar with this kind of thing and i have some questions

How to check my ada0 already have TRIM feature on?
Do i need to run this newfs command daily?
How to turn on TRIM for existing filesystem?


----------



## SirDice (Nov 29, 2011)

alie said:
			
		

> 2. Do i need to run this newfs command daily ?


If you value your data, no.

From newfs(8):


> The newfs utility is used to initialize and clear file systems before first use.


And,


> *-E* *Erase the content of the disk before making the filesystem.*  The reserved area in front of the superblock (for bootcode) will not be erased.


----------



## alie (Nov 29, 2011)

```
[/usr/home/ezyclie]# tunefs -p /dev/ada0p2
tunefs: POSIX.1e ACLs: (-a)                                disabled
tunefs: NFSv4 ACLs: (-N)                                   disabled
tunefs: MAC multilabel: (-l)                               disabled
tunefs: soft updates: (-n)                                 enabled
tunefs: soft update journaling: (-j)                       enabled
tunefs: gjournal: (-J)                                     disabled
tunefs: trim: (-t)                                         disabled
tunefs: maximum blocks per file in a cylinder group: (-e)  4096
tunefs: average file size: (-f)                            16384
tunefs: average number of files in a directory: (-s)       64
tunefs: minimum percentage of free space: (-m)             8%
tunefs: optimization preference: (-o)                      time
tunefs: volume label: (-L)
```

So it's not possible to enable trim support with:

```
# tunefs -t enable /dev/ada0p2
```


----------



## alie (Nov 29, 2011)

Okie solved:


```
1. Single user mode
2. # mount
3. # tunefs -t enable /dev/ada0p2
```


```
[/usr/home/ezyclie]# tunefs -p /dev/ada0p2
tunefs: POSIX.1e ACLs: (-a)                                disabled
tunefs: NFSv4 ACLs: (-N)                                   disabled
tunefs: MAC multilabel: (-l)                               disabled
tunefs: soft updates: (-n)                                 enabled
tunefs: soft update journaling: (-j)                       enabled
tunefs: gjournal: (-J)                                     disabled
tunefs: trim: (-t)                                         enabled
tunefs: maximum blocks per file in a cylinder group: (-e)  4096
tunefs: average file size: (-f)                            16384
tunefs: average number of files in a directory: (-s)       64
tunefs: minimum percentage of free space: (-m)             8%
tunefs: optimization preference: (-o)                      time
tunefs: volume label: (-L)
```


----------



## phoenix (Nov 30, 2011)

When in doubt, read the man page:  tunefs(8)

It mentions in there you can't manipulate mounted filesystem unless they are mounted read-only.  And several options can't be enabled until you run an *fsck*.


----------



## Petz (Dec 1, 2011)

Bummer, it would be nice to able to change these and have them take effect on reboot.


----------

