diff --git a/sbin/mount/mntopts.h b/sbin/mount/mntopts.h
index d3419fa..13a33d3 100644
--- a/sbin/mount/mntopts.h
+++ b/sbin/mount/mntopts.h
@@ -49,6 +49,7 @@ struct mntopt {
 #define MOPT_NOEXEC		{ "exec",	1, MNT_NOEXEC, 0 }
 #define MOPT_NOSUID		{ "suid",	1, MNT_NOSUID, 0 }
 #define MOPT_NOSYMFOLLOW	{ "symfollow",  1, MNT_NOSYMFOLLOW, 0 }
+#define MOPT_TRIM		{ "trim",	0, MNT_TRIM, 0 }   
 #define MOPT_RDONLY		{ "rdonly",	0, MNT_RDONLY, 0 }
 #define MOPT_SYNC		{ "sync",	0, MNT_SYNCHRONOUS, 0 }
 #define MOPT_UNION		{ "union",	0, MNT_UNION, 0 }
diff --git a/sbin/mount/mount.8 b/sbin/mount/mount.8
index 438fc77..fba3eab 100644
--- a/sbin/mount/mount.8
+++ b/sbin/mount/mount.8
@@ -193,6 +193,10 @@ mount the file system read-only (even the super-user may not write it).
 All
 .Tn I/O
 to the file system should be done synchronously.
+.It Cm trim
+If the device supports trim (kern.cam.da.X.trim_enabled exists) and is set,
+the file system will perform online trim for corresponding block deletions.
+Currently UFS only supports this feature.
 .It Cm suiddir
 A directory on the mounted filesystem will respond to the SUID bit
 being set, by setting the owner of any new files to be the same
diff --git a/sys/sys/mount.h b/sys/sys/mount.h
index e27baca..2467d78 100644
--- a/sys/sys/mount.h
+++ b/sys/sys/mount.h
@@ -225,6 +225,7 @@ struct mount {
 #define	MNT_SUIDDIR	0x00100000	/* special handling of SUID on dirs */
 #define	MNT_SOFTDEP	0x00200000	/* soft updates being done */
 #define	MNT_NOSYMFOLLOW	0x00400000	/* do not follow symlinks */
+#define	MNT_TRIM	0x01000000	/* Enable online FS trimming */
 #define	MNT_NOATIME	0x10000000	/* disable update of file access time */
 #define	MNT_NOCLUSTERR	0x40000000	/* disable cluster read */
 #define	MNT_NOCLUSTERW	0x80000000	/* disable cluster write */
@@ -262,7 +263,7 @@ struct mount {
 			MNT_LOCAL	| MNT_USER	| MNT_QUOTA	| \
 			MNT_ROOTFS	| MNT_NOATIME	| MNT_NOCLUSTERR| \
 			MNT_NOCLUSTERW	| MNT_SUIDDIR	| MNT_SOFTDEP	| \
-			MNT_IGNORE	| MNT_NOSYMFOLLOW | MNT_EXPUBLIC )
+			MNT_IGNORE	| MNT_NOSYMFOLLOW | MNT_EXPUBLIC | MNT_TRIM)
 /*
  * External filesystem command modifier flags.
  * Unmount can use the MNT_FORCE flag.
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index efe3bcd..c8e3a74 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -356,11 +356,11 @@ update:
 		mp->mnt_kern_flag |= MNTK_WANTRDWR;
 	mp->mnt_flag &=~ (MNT_NOSUID | MNT_NOEXEC | MNT_NODEV |
 	    MNT_SYNCHRONOUS | MNT_UNION | MNT_ASYNC | MNT_NOATIME |
-	    MNT_NOSYMFOLLOW | MNT_IGNORE |
+	    MNT_NOSYMFOLLOW | MNT_IGNORE | MNT_TRIM |
 	    MNT_NOCLUSTERR | MNT_NOCLUSTERW | MNT_SUIDDIR);
 	mp->mnt_flag |= uap->flags & (MNT_NOSUID | MNT_NOEXEC |
 	    MNT_NODEV | MNT_SYNCHRONOUS | MNT_UNION | MNT_ASYNC | MNT_FORCE |
-	    MNT_NOSYMFOLLOW | MNT_IGNORE |
+	    MNT_NOSYMFOLLOW | MNT_IGNORE | MNT_TRIM |
 	    MNT_NOATIME | MNT_NOCLUSTERR | MNT_NOCLUSTERW | MNT_SUIDDIR);
 	/*
 	 * Mount the filesystem.
