svn commit: r272510 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Xin LI
delphij at FreeBSD.org
Sat Oct 4 08:51:58 UTC 2014
Author: delphij
Date: Sat Oct 4 08:51:57 2014
New Revision: 272510
URL: https://svnweb.freebsd.org/changeset/base/272510
Log:
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
MFC after: 2 weeks
Modified:
head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
Directory Properties:
head/sys/cddl/contrib/opensolaris/ (props changed)
Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c Sat Oct 4 08:41:23 2014 (r272509)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c Sat Oct 4 08:51:57 2014 (r272510)
@@ -167,6 +167,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;
@@ -1971,6 +1979,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;
@@ -2815,6 +2826,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-all
mailing list