diff options
| author | dh142964 <David.Hollister@Sun.COM> | 2009-09-30 13:40:27 -0600 |
|---|---|---|
| committer | dh142964 <David.Hollister@Sun.COM> | 2009-09-30 13:40:27 -0600 |
| commit | 4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6 (patch) | |
| tree | 17ba947a21901975bb128b8c535cb0575d4c9a4a /usr/src/uts/common/io/devinfo.c | |
| parent | 7b57f05abb8796d3c91c8d4d4c75dcafb5af6b69 (diff) | |
| download | illumos-joyent-4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6.tar.gz | |
PSARC 2008/672 thebe SAS/SATA driver
PSARC 2008/755 ddi_ssoft_state(9F) and ddi_isoft_state(9F)
PSARC 2008/764 Cfgadm SCSI-Plugin MPxIO Support
PSARC 2009/125 scsi_device property interfaces
6726110 pmcs driver (driver for thebe)
6726867 SCSAv3
Diffstat (limited to 'usr/src/uts/common/io/devinfo.c')
| -rw-r--r-- | usr/src/uts/common/io/devinfo.c | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/usr/src/uts/common/io/devinfo.c b/usr/src/uts/common/io/devinfo.c index cff9b3ac4f..d1d02ce378 100644 --- a/usr/src/uts/common/io/devinfo.c +++ b/usr/src/uts/common/io/devinfo.c @@ -647,7 +647,7 @@ di_ioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp) rv = i_ddi_devs_attached(i); modunload_enable(); - i_ddi_di_cache_invalidate(KM_SLEEP); + i_ddi_di_cache_invalidate(); return ((rv == DDI_SUCCESS)? 0 : ENXIO); @@ -2638,6 +2638,19 @@ path_state_convert(mdi_pathinfo_state_t st) } } +static uint_t +path_flags_convert(uint_t pi_path_flags) +{ + uint_t di_path_flags = 0; + + /* MDI_PATHINFO_FLAGS_HIDDEN nodes not in snapshot */ + + if (pi_path_flags & MDI_PATHINFO_FLAGS_DEVICE_REMOVED) + di_path_flags |= DI_PATH_FLAGS_DEVICE_REMOVED; + + return (di_path_flags); +} + static di_off_t di_path_getprop(mdi_pathinfo_t *pip, di_off_t *off_p, @@ -2793,13 +2806,19 @@ di_getpath_data(dev_info_t *dip, di_off_t *off_p, di_off_t noff, pip = NULL; while (pip = (*next_pip)(dip, pip)) { - mdi_pathinfo_state_t state; di_off_t stored_offset; dcmn_err((CE_WARN, "marshalling pip = %p", (void *)pip)); mdi_pi_lock(pip); + /* We don't represent hidden paths in the snapshot */ + if (mdi_pi_ishidden(pip)) { + dcmn_err((CE_WARN, "hidden, skip")); + mdi_pi_unlock(pip); + continue; + } + if (di_pip_find(st, pip, &stored_offset) != -1) { /* * We've already seen this pathinfo node so we need to @@ -2856,8 +2875,8 @@ di_getpath_data(dev_info_t *dip, di_off_t *off_p, di_off_t noff, */ di_register_pip(st, pip, me->self); - state = mdi_pi_get_state(pip); - me->path_state = path_state_convert(state); + me->path_state = path_state_convert(mdi_pi_get_state(pip)); + me->path_flags = path_flags_convert(mdi_pi_get_flags(pip)); me->path_instance = mdi_pi_get_path_instance(pip); |
