Added vfs.zfs.vdev.trim_on_init sysctl which allows full vdev trim on

initialisation to be enabled (1) / disabled (0) defaults to enabled.

This is useful for devices which have a slow trim speed and are either
new or have otherwise already been wiped e.g. secure erase.

PR:     kern/173116
Submitted by:   Steven Hartland
Approved by:    pjd (mentor)
This commit is contained in:
Steven Hartland 2012-12-13 17:39:07 +00:00
parent c440a359ca
commit 5780c4a723
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=244188

View file

@ -148,6 +148,11 @@
#include <sys/trim_map.h>
#include <sys/fs/zfs.h>
static boolean_t vdev_trim_on_init = B_TRUE;
SYSCTL_DECL(_vfs_zfs_vdev);
SYSCTL_INT(_vfs_zfs_vdev, OID_AUTO, trim_on_init, CTLFLAG_RW,
&vdev_trim_on_init, 0, "Enable/disable full vdev trim on initialisation");
/*
* Basic routines to read and write from a vdev label.
* Used throughout the rest of this file.
@ -724,7 +729,7 @@ vdev_label_init(vdev_t *vd, uint64_t crtxg, vdev_labeltype_t reason)
* Don't TRIM if removing so that we don't interfere with zpool
* disaster recovery.
*/
if (!zfs_notrim && (reason == VDEV_LABEL_CREATE ||
if (!zfs_notrim && vdev_trim_on_init && (reason == VDEV_LABEL_CREATE ||
reason == VDEV_LABEL_SPARE || reason == VDEV_LABEL_L2CACHE))
zio_wait(zio_trim(NULL, spa, vd, 0, vd->vdev_psize));