Print this page
4051 Don't free mdi_pathinfo_t in mptsas when device(s) are retired.
*** 18,27 ****
--- 18,28 ----
*
* CDDL HEADER END
*/
/*
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014 Nexenta Systems Inc. All rights reserved.
*/
/*
* Multipath driver interface (MDI) implementation; see mdi_impldefs.h for a
* more detailed discussion of the overall mpxio architecture.
*** 3654,3681 ****
rv = ndi_devi_online(cdip, 0);
MDI_CLIENT_LOCK(ct);
if ((rv != NDI_SUCCESS) &&
(MDI_CLIENT_STATE(ct) ==
MDI_CLIENT_STATE_DEGRADED)) {
- /*
- * ndi_devi_online failed.
- * Reset client flags to
- * offline.
- */
MDI_DEBUG(1, (MDI_WARN, cdip,
"!ndi_devi_online failed "
"error %x", rv));
- MDI_CLIENT_SET_OFFLINE(ct);
}
! if (rv != NDI_SUCCESS) {
! /* Reset the path state */
! MDI_PI_LOCK(pip);
! MDI_PI(pip)->pi_state =
! MDI_PI_OLD_STATE(pip);
! MDI_PI_UNLOCK(pip);
}
- }
break;
case MDI_CLIENT_STATE_FAILED:
/*
* This is the last path case for
--- 3655,3670 ----
rv = ndi_devi_online(cdip, 0);
MDI_CLIENT_LOCK(ct);
if ((rv != NDI_SUCCESS) &&
(MDI_CLIENT_STATE(ct) ==
MDI_CLIENT_STATE_DEGRADED)) {
MDI_DEBUG(1, (MDI_WARN, cdip,
"!ndi_devi_online failed "
"error %x", rv));
}
! rv = NDI_SUCCESS;
}
break;
case MDI_CLIENT_STATE_FAILED:
/*
* This is the last path case for