summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Johnston <rob.johnston@joyent.com>2018-08-21 23:36:28 +0000
committerRob Johnston <rob.johnston@joyent.com>2018-08-22 19:21:02 +0000
commit14623ce3614a9ee961adb4294066fe377022d419 (patch)
treeff981dfb32917bb0a1fdc73efb6ade266545fb08
parent88787a9cd548438c7b4d63636df84c9c967cf9f2 (diff)
downloadillumos-joyent-14623ce3614a9ee961adb4294066fe377022d419.tar.gz
OS-7134 ses enumerator blows chunks on US60+8
Reviewed by: Robert Mustacchi <rm@joyent.com> Approved by: Jason King <jason.king@joyent.com>
-rw-r--r--usr/src/lib/fm/topo/modules/common/disk/disk_common.c2
-rw-r--r--usr/src/lib/fm/topo/modules/common/ses/ses.c4
2 files changed, 4 insertions, 2 deletions
diff --git a/usr/src/lib/fm/topo/modules/common/disk/disk_common.c b/usr/src/lib/fm/topo/modules/common/disk/disk_common.c
index 5a7a5b5467..9110e3bc62 100644
--- a/usr/src/lib/fm/topo/modules/common/disk/disk_common.c
+++ b/usr/src/lib/fm/topo/modules/common/disk/disk_common.c
@@ -550,7 +550,7 @@ disk_tnode_create(topo_mod_t *mod, tnode_t *parent,
return (-1);
}
- if (dnode->ddn_devid != NULL &&
+ if (dnode != NULL && dnode->ddn_devid != NULL &&
disk_add_temp_sensor(mod, dtn, dnode->ddn_devid) != 0) {
topo_mod_dprintf(mod, "disk_tnode_create: failed to create "
"temperature sensor node on bay=%d/disk=0",
diff --git a/usr/src/lib/fm/topo/modules/common/ses/ses.c b/usr/src/lib/fm/topo/modules/common/ses/ses.c
index 2f85476cb8..7fd6d03cd1 100644
--- a/usr/src/lib/fm/topo/modules/common/ses/ses.c
+++ b/usr/src/lib/fm/topo/modules/common/ses/ses.c
@@ -1207,6 +1207,9 @@ ses_create_disk(ses_enum_data_t *sdp, tnode_t *pnode, nvlist_t *props)
/*
* Skip devices that are not in a present (and possibly damaged) state.
+ * Also, skip devices that this expander is either not fully wired to,
+ * or are hidden due to SAS zoning, as indicated by the
+ * SES_ESC_NO_ACCESS state.
*/
if (nvlist_lookup_uint64(props, SES_PROP_STATUS_CODE, &status) != 0)
return (0);
@@ -1216,7 +1219,6 @@ ses_create_disk(ses_enum_data_t *sdp, tnode_t *pnode, nvlist_t *props)
status != SES_ESC_CRITICAL &&
status != SES_ESC_NONCRITICAL &&
status != SES_ESC_UNRECOVERABLE &&
- status != SES_ESC_NO_ACCESS &&
status != SES_ESC_UNKNOWN)
return (0);