6918908 system panic after moving cable from one HBA to another with 1.9.1 special fw
--- a/usr/src/uts/common/io/scsi/adapters/scsi_vhci/mpapi_impl.c Thu Jan 28 13:55:21 2010 -0800
+++ b/usr/src/uts/common/io/scsi/adapters/scsi_vhci/mpapi_impl.c Fri Jan 29 07:46:53 2010 +0800
@@ -4226,44 +4226,33 @@
* but ignore to update on another one.
*/
tgt_port = NULL;
- if ((mdi_prop_lookup_string(path_data->resp,
+ if (path_data->valid == 1 &&
+ (mdi_prop_lookup_string(path_data->resp,
SCSI_ADDR_PROP_TARGET_PORT,
&tgt_port) == DDI_PROP_SUCCESS) &&
tgt_port != NULL &&
(vhci_mpapi_check_tp_in_tpg(
tpg_data, tgt_port) == 1)) {
- if (path_data->valid == 1) {
- VHCI_DEBUG(4, (CE_NOTE, NULL,
- "vhci_mpapi_update_tpg_acc_state_"
- "for_ lu: Operating on LUN(%s), "
- " PATH(%p), TPG(%x: %s)\n",
- lu_data->prop.name, path_data->resp,
- tpg_data->prop.tpgId,
- tpg_data->pclass));
- if (MDI_PI_IS_ONLINE(path_data->resp)) {
- tpg_data->prop.accessState =
- MP_DRVR_ACCESS_STATE_ACTIVE;
- break;
- } else if (MDI_PI_IS_STANDBY(
- path_data->resp)) {
+ VHCI_DEBUG(4, (CE_NOTE, NULL,
+ "vhci_mpapi_update_tpg_acc_state_"
+ "for_ lu: Operating on LUN(%s), "
+ " PATH(%p), TPG(%x: %s)\n",
+ lu_data->prop.name, path_data->resp,
+ tpg_data->prop.tpgId,
+ tpg_data->pclass));
+ if (MDI_PI_IS_ONLINE(path_data->resp)) {
+ tpg_data->prop.accessState =
+ MP_DRVR_ACCESS_STATE_ACTIVE;
+ break;
+ } else if (MDI_PI_IS_STANDBY(path_data->resp)) {
tpg_data->prop.accessState =
MP_DRVR_ACCESS_STATE_STANDBY;
- break;
- } else {
- tpg_data->prop.accessState =
- MP_DRVR_ACCESS_STATE_UNAVAILABLE;
- }
+ break;
} else {
- /*
- * if path is not valid any more,
- * mark the associated tpg as
- * unavailable.
- */
tpg_data->prop.accessState =
MP_DRVR_ACCESS_STATE_UNAVAILABLE;
}
}
-
path_list = path_list->next;
}
tpg_list = tpg_list->next;