diff options
author | Garrett D'Amore <garrett@damore.org> | 2013-11-17 14:26:56 -0800 |
---|---|---|
committer | Robert Mustacchi <rm@joyent.com> | 2013-12-16 13:37:26 -0800 |
commit | 59d8f1005b65ef8ad2c9ce040497daf81dd65085 (patch) | |
tree | c20d3313e8319858158f3ee816ccda62ca909b1f /usr/src/uts/common/io/blkdev | |
parent | d1b18d1a1255ac607d5e072515d727cdfe52f878 (diff) | |
download | illumos-joyent-59d8f1005b65ef8ad2c9ce040497daf81dd65085.tar.gz |
4335 need a mechanism to detect solid state storage devices
Reviewed by: Keith M Wesolowski <wesolows@foobazco.org>
Reviewed by: Saso Kiselkov <skiselkov.ml@gmail.com>
Approved by: Dan McDonald <danmcd@nexenta.com>
Diffstat (limited to 'usr/src/uts/common/io/blkdev')
-rw-r--r-- | usr/src/uts/common/io/blkdev/blkdev.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/usr/src/uts/common/io/blkdev/blkdev.c b/usr/src/uts/common/io/blkdev/blkdev.c index 4c5d87db23..003f06f7f0 100644 --- a/usr/src/uts/common/io/blkdev/blkdev.c +++ b/usr/src/uts/common/io/blkdev/blkdev.c @@ -85,6 +85,7 @@ struct bd { kstat_io_t *d_kiop; boolean_t d_rdonly; + boolean_t d_ssd; boolean_t d_removable; boolean_t d_hotpluggable; boolean_t d_use_dma; @@ -1118,6 +1119,14 @@ bd_ioctl(dev_t dev, int cmd, intptr_t arg, int flag, cred_t *credp, int *rvalp) } return (0); } + case DKIOCSOLIDSTATE: { + int i; + i = bd->d_ssd ? 1 : 0; + if (ddi_copyout(&i, ptr, sizeof (i), flag)) { + return (EFAULT); + } + return (0); + } case DKIOCSTATE: { enum dkio_state state; if (ddi_copyin(ptr, &state, sizeof (state), flag)) { @@ -1261,6 +1270,7 @@ bd_tg_getinfo(dev_info_t *dip, int cmd, void *arg, void *tg_cookie) bd_update_state(bd); ((tg_attribute_t *)arg)->media_is_writable = bd->d_rdonly ? B_FALSE : B_TRUE; + ((tg_attribute_t *)arg)->media_is_solid_state = bd->d_ssd; return (0); default: @@ -1376,6 +1386,7 @@ bd_update_state(bd_t *bd) bd->d_blkshift = ddi_ffs(media.m_blksize) - 1; bd->d_numblks = media.m_nblks; bd->d_rdonly = media.m_readonly; + bd->d_ssd = media.m_solidstate; state = DKIO_INSERTED; } |