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 ||
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to