summaryrefslogtreecommitdiff
path: root/usr/src/uts/common
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2019-08-28 12:02:36 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2019-08-28 12:02:36 +0000
commit8854c9be792aa0a2df2e16e3e0797838559f16c6 (patch)
treeb4d57064a444fe14d44342cd67f4b2e8f2e3f000 /usr/src/uts/common
parentfa1252de73f343f36bf1e6f366902ba96c480aaa (diff)
parentc5806743f70246f7f708e57514b9103a6291d629 (diff)
downloadillumos-joyent-release-20190829.tar.gz
[illumos-gate merge]release-20190829
commit c5806743f70246f7f708e57514b9103a6291d629 11622 clean up rarer mandoc lint warnings commit 6ae02400ec7326832d2e19e92b4174ec778b2b9f 11620 strtod man page typo equence commit 0463c8009260e445fd1885cfaf98e04a586d495b 11618 Use exec_attr instead of suid for smbfs mount and unmount commit efe44a0312f417787c2d6992582ad06b1b98cd8d 11608 add DKIOC ioctl to report drive UNMAP support Conflicts: usr/src/cmd/fs.d/mount.c
Diffstat (limited to 'usr/src/uts/common')
-rw-r--r--usr/src/uts/common/fs/zfs/zvol.c11
-rw-r--r--usr/src/uts/common/io/scsi/targets/sd.c13
-rw-r--r--usr/src/uts/common/sys/dkio.h8
3 files changed, 30 insertions, 2 deletions
diff --git a/usr/src/uts/common/fs/zfs/zvol.c b/usr/src/uts/common/fs/zfs/zvol.c
index b2d212dc64..1e8db36b0e 100644
--- a/usr/src/uts/common/fs/zfs/zvol.c
+++ b/usr/src/uts/common/fs/zfs/zvol.c
@@ -1762,7 +1762,7 @@ zvol_ioctl(dev_t dev, int cmd, intptr_t arg, int flag, cred_t *cr, int *rvalp)
{
zvol_state_t *zv;
struct dk_callback *dkc;
- int error = 0;
+ int i, error = 0;
locked_range_t *lr;
mutex_enter(&zfsdev_state_lock);
@@ -1988,6 +1988,15 @@ zvol_ioctl(dev_t dev, int cmd, intptr_t arg, int flag, cred_t *cr, int *rvalp)
return (error);
}
+ case DKIOC_CANFREE:
+ i = zvol_unmap_enabled ? 1 : 0;
+ if (ddi_copyout(&i, (void *)arg, sizeof (int), flag) != 0) {
+ error = EFAULT;
+ } else {
+ error = 0;
+ }
+ break;
+
default:
error = SET_ERROR(ENOTTY);
break;
diff --git a/usr/src/uts/common/io/scsi/targets/sd.c b/usr/src/uts/common/io/scsi/targets/sd.c
index f998d9ef11..eb694bd3bb 100644
--- a/usr/src/uts/common/io/scsi/targets/sd.c
+++ b/usr/src/uts/common/io/scsi/targets/sd.c
@@ -26,7 +26,7 @@
* Copyright (c) 2011 Bayard G. Bell. All rights reserved.
* Copyright (c) 2012, 2016 by Delphix. All rights reserved.
* Copyright 2012 DEY Storage Systems, Inc. All rights reserved.
- * Copyright 2016 Joyent, Inc.
+ * Copyright 2019 Joyent, Inc.
* Copyright 2017 Nexenta Systems, Inc.
* Copyright 2019 Racktop Systems
*/
@@ -22712,6 +22712,7 @@ sdioctl(dev_t dev, int cmd, intptr_t arg, int flag, cred_t *cred_p, int *rval_p)
case DKIOCGMEDIAINFO:
case DKIOCGMEDIAINFOEXT:
case DKIOCSOLIDSTATE:
+ case DKIOC_CANFREE:
case MHIOCENFAILFAST:
case MHIOCSTATUS:
case MHIOCTKOWN:
@@ -23561,6 +23562,16 @@ skip_ready_valid:
}
break;
+ case DKIOC_CANFREE:
+ SD_TRACE(SD_LOG_IOCTL, un, "DKIOC_CANFREE\n");
+ i = (un->un_thin_flags & SD_THIN_PROV_ENABLED) ? 1 : 0;
+ if (ddi_copyout(&i, (void *)arg, sizeof (int), flag) != 0) {
+ err = EFAULT;
+ } else {
+ err = 0;
+ }
+ break;
+
case DKIOCGETWCE: {
int wce;
diff --git a/usr/src/uts/common/sys/dkio.h b/usr/src/uts/common/sys/dkio.h
index 7a9bbc3f15..9d88731c5d 100644
--- a/usr/src/uts/common/sys/dkio.h
+++ b/usr/src/uts/common/sys/dkio.h
@@ -24,6 +24,7 @@
*
* Copyright 2017 Nexenta Systems, Inc. All rights reserved.
* Copyright 2012 DEY Storage Systems, Inc. All rights reserved.
+ * Copyright 2019 Joyent, Inc.
*/
#ifndef _SYS_DKIO_H
@@ -543,6 +544,13 @@ typedef struct dkioc_free_list_s {
(sizeof (dkioc_free_list_t) + \
(num_exts - 1) * sizeof (dkioc_free_list_ext_t))
+/*
+ * ioctl to determine if free (e.g. SCSI UNMAP) is supported.
+ * See FDIOC ioctls for why we're not using '51' here.
+ */
+#define DKIOC_CANFREE (DKIOC|60)
+
+
#ifdef __cplusplus
}
#endif