svn commit: r273345 - stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Xin LI
delphij at FreeBSD.org
Mon Oct 20 21:59:12 UTC 2014
Author: delphij
Date: Mon Oct 20 21:59:11 2014
New Revision: 273345
URL: https://svnweb.freebsd.org/changeset/base/273345
Log:
MFC r272510: MFV r272498:
Add a new sysctl, vfs.zfs.vol.unmap_enabled, which allows the system
administrator to toggle whether ZFS should ignore UNMAP requests.
Illumos issue:
5149 zvols need a way to ignore DKIOCFREE
Modified:
stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
==============================================================================
--- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c Mon Oct 20 21:57:24 2014 (r273344)
+++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c Mon Oct 20 21:59:11 2014 (r273345)
@@ -168,6 +168,14 @@ static LIST_HEAD(, zvol_state) all_zvols
*/
int zvol_maxphys = DMU_MAX_ACCESS/2;
+/*
+ * Toggle unmap functionality.
+ */
+boolean_t zvol_unmap_enabled = B_TRUE;
+SYSCTL_INT(_vfs_zfs_vol, OID_AUTO, unmap_enabled, CTLFLAG_RWTUN,
+ &zvol_unmap_enabled, 0,
+ "Enable UNMAP functionality");
+
static d_open_t zvol_d_open;
static d_close_t zvol_d_close;
static d_read_t zvol_read;
@@ -1972,6 +1980,9 @@ zvol_ioctl(dev_t dev, int cmd, intptr_t
dkioc_free_t df;
dmu_tx_t *tx;
+ if (!zvol_unmap_enabled)
+ break;
+
if (ddi_copyin((void *)arg, &df, sizeof (df), flag)) {
error = SET_ERROR(EFAULT);
break;
@@ -2816,6 +2827,9 @@ zvol_d_ioctl(struct cdev *dev, u_long cm
zil_commit(zv->zv_zilog, ZVOL_OBJ);
break;
case DIOCGDELETE:
+ if (!zvol_unmap_enabled)
+ break;
+
offset = ((off_t *)data)[0];
length = ((off_t *)data)[1];
if ((offset % DEV_BSIZE) != 0 || (length % DEV_BSIZE) != 0 ||
More information about the svn-src-stable
mailing list