summaryrefslogtreecommitdiffstats
path: root/sys/cddl
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2014-10-20 21:53:51 +0000
committerdelphij <delphij@FreeBSD.org>2014-10-20 21:53:51 +0000
commitac9149e73f8a61253bb7362405974c8a649ef34c (patch)
tree85308600231ae47ed41729ee647da1932b2e6248 /sys/cddl
parentc02aa9ff18ddc7138b1999ff0eba11fc94bb5113 (diff)
downloadFreeBSD-src-ac9149e73f8a61253bb7362405974c8a649ef34c.zip
FreeBSD-src-ac9149e73f8a61253bb7362405974c8a649ef34c.tar.gz
MFC r272507: MFV r272496:
Add tunable for number of metaslabs per vdev (vfs.zfs.vdev.metaslabs_per_vdev). The default remains at 200. Illumos issue: 5161 add tunable for number of metaslabs per vdev
Diffstat (limited to 'sys/cddl')
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
index 7eac42c..dea1a8f 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
@@ -156,6 +156,15 @@ static vdev_ops_t *vdev_ops_table[] = {
/*
+ * When a vdev is added, it will be divided into approximately (but no
+ * more than) this number of metaslabs.
+ */
+int metaslabs_per_vdev = 200;
+SYSCTL_INT(_vfs_zfs_vdev, OID_AUTO, metaslabs_per_vdev, CTLFLAG_RDTUN,
+ &metaslabs_per_vdev, 0,
+ "When a vdev is added, how many metaslabs the vdev should be divided into");
+
+/*
* Given a vdev type, return the appropriate ops vector.
*/
static vdev_ops_t *
@@ -1663,9 +1672,9 @@ void
vdev_metaslab_set_size(vdev_t *vd)
{
/*
- * Aim for roughly 200 metaslabs per vdev.
+ * Aim for roughly metaslabs_per_vdev (default 200) metaslabs per vdev.
*/
- vd->vdev_ms_shift = highbit64(vd->vdev_asize / 200);
+ vd->vdev_ms_shift = highbit64(vd->vdev_asize / metaslabs_per_vdev);
vd->vdev_ms_shift = MAX(vd->vdev_ms_shift, SPA_MAXBLOCKSHIFT);
}
OpenPOWER on IntegriCloud