summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/io/scsi/targets/sd.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/io/scsi/targets/sd.c')
-rw-r--r--usr/src/uts/common/io/scsi/targets/sd.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/usr/src/uts/common/io/scsi/targets/sd.c b/usr/src/uts/common/io/scsi/targets/sd.c
index e5d35025fe..eb57ec143b 100644
--- a/usr/src/uts/common/io/scsi/targets/sd.c
+++ b/usr/src/uts/common/io/scsi/targets/sd.c
@@ -22347,6 +22347,20 @@ skip_ready_valid:
}
break;
+ case DKIOCREADONLY:
+ SD_TRACE(SD_LOG_IOCTL, un, "DKIOCREADONLY\n");
+ i = 0;
+ if ((ISCD(un) && !un->un_f_mmc_writable_media) ||
+ (sr_check_wp(dev) != 0)) {
+ i = 1;
+ }
+ if (ddi_copyout(&i, (void *)arg, sizeof (int), flag) != 0) {
+ err = EFAULT;
+ } else {
+ err = 0;
+ }
+ break;
+
case DKIOCGTEMPERATURE:
SD_TRACE(SD_LOG_IOCTL, un, "DKIOCGTEMPERATURE\n");
err = sd_dkio_get_temp(dev, (caddr_t)arg, flag);