diff options
author | Chris Liu <Chris.Liu@Sun.COM> | 2009-06-04 14:55:51 +0800 |
---|---|---|
committer | Chris Liu <Chris.Liu@Sun.COM> | 2009-06-04 14:55:51 +0800 |
commit | 0c3de118c3eb50201538531adc7af57753c37a62 (patch) | |
tree | 809a6ab9ca2fc7d826e9ff2301d24bcba6cecb4a | |
parent | 5c51f1241dbbdf2656d0e10011981411ed0c9673 (diff) | |
download | illumos-joyent-0c3de118c3eb50201538531adc7af57753c37a62.tar.gz |
6837799 iostat -Y failed on the PHCI driver name with '_'
6681713 mpathadm list LU fails after LUN is unmapped and all device paths are considered failed by MPxIO
-rw-r--r-- | usr/src/cmd/stat/common/acquire_iodevs.c | 6 | ||||
-rw-r--r-- | usr/src/lib/mpapi/libmpscsi_vhci/common/MP_GetMultipathLusPlugin.c | 20 |
2 files changed, 15 insertions, 11 deletions
diff --git a/usr/src/cmd/stat/common/acquire_iodevs.c b/usr/src/cmd/stat/common/acquire_iodevs.c index d4a5553d52..e72b3f26a8 100644 --- a/usr/src/cmd/stat/common/acquire_iodevs.c +++ b/usr/src/cmd/stat/common/acquire_iodevs.c @@ -19,12 +19,10 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "statcommon.h" #include "dsr.h" @@ -696,7 +694,7 @@ get_lti(char *s, { int num = 0; - num = sscanf(s, "%[a-z]%d%*[.]%[a-z]%d%*[.]%[a-z]%d", lname, l, + num = sscanf(s, "%[a-z]%d%*[.]%[a-z]%d%*[.]%[a-z_]%d", lname, l, tname, t, iname, i); return ((num == 6) ? 1 : 0); } diff --git a/usr/src/lib/mpapi/libmpscsi_vhci/common/MP_GetMultipathLusPlugin.c b/usr/src/lib/mpapi/libmpscsi_vhci/common/MP_GetMultipathLusPlugin.c index 91670ad4f0..861f14c8a5 100644 --- a/usr/src/lib/mpapi/libmpscsi_vhci/common/MP_GetMultipathLusPlugin.c +++ b/usr/src/lib/mpapi/libmpscsi_vhci/common/MP_GetMultipathLusPlugin.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -61,21 +61,27 @@ static int getOidList(di_node_t root_node, MP_OID_LIST *pOidList) if (haveList && (numNodes < pOidList->oidCount)) { + /* skip the node which is not online */ + if (di_state(sv_child_node) != 0) { + sv_child_node = di_sibling_node(sv_child_node); + continue; + } + instNum = - (MP_UINT64)di_instance(sv_child_node); + (MP_UINT64)di_instance(sv_child_node); log(LOG_INFO, "getOidList()", " - instance number is: %llx", instNum); pOidList->oids[numNodes].objectType = - MP_OBJECT_TYPE_MULTIPATH_LU; + MP_OBJECT_TYPE_MULTIPATH_LU; pOidList->oids[numNodes].ownerId = - g_pluginOwnerID; + g_pluginOwnerID; pOidList->oids[numNodes].objectSequenceNumber = - instNum; + instNum; } ++numNodes; @@ -147,10 +153,10 @@ MP_GetMultipathLusPlugin(MP_OID_LIST **ppList) } pOidList->oids[0].objectType = - MP_OBJECT_TYPE_MULTIPATH_LU; + MP_OBJECT_TYPE_MULTIPATH_LU; pOidList->oids[0].ownerId = - g_pluginOwnerID; + g_pluginOwnerID; *ppList = pOidList; |