changeset 10622:de30154fc5f5

6879696 panic happens when trying to offline fcoei port with mpxio enabled
author Kelly Hu <kelly.hu@Sun.COM>
date Wed, 23 Sep 2009 22:24:40 +0800
parents a6ab13bfdd64
children a08d4ae62796
files usr/src/uts/common/io/fibre-channel/ulp/fcp.c
diffstat 1 files changed, 13 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/io/fibre-channel/ulp/fcp.c	Wed Sep 23 09:39:54 2009 -0400
+++ b/usr/src/uts/common/io/fibre-channel/ulp/fcp.c	Wed Sep 23 22:24:40 2009 +0800
@@ -13407,6 +13407,7 @@
 static void
 fcp_remove_child(struct fcp_lun *plun)
 {
+	int circ;
 	ASSERT(MUTEX_HELD(&plun->lun_mutex));
 
 	if (fcp_is_child_present(plun, plun->lun_cip) == FC_SUCCESS) {
@@ -13417,6 +13418,18 @@
 			mutex_exit(&plun->lun_mutex);
 			mutex_exit(&plun->lun_tgt->tgt_mutex);
 			mutex_exit(&plun->lun_tgt->tgt_port->port_mutex);
+			mdi_devi_enter(
+			    plun->lun_tgt->tgt_port->port_dip, &circ);
+			mdi_hold_path(PIP(plun->lun_cip));
+			mdi_devi_exit_phci(
+			    plun->lun_tgt->tgt_port->port_dip, circ);
+			(void) mdi_pi_offline(PIP(plun->lun_cip),
+			    NDI_DEVI_REMOVE);
+			mdi_devi_enter_phci(
+			    plun->lun_tgt->tgt_port->port_dip, &circ);
+			mdi_rele_path(PIP(plun->lun_cip));
+			mdi_devi_exit_phci(
+			    plun->lun_tgt->tgt_port->port_dip, circ);
 			FCP_TRACE(fcp_logq,
 			    plun->lun_tgt->tgt_port->port_instbuf,
 			    fcp_trace, FCP_BUF_LEVEL_3, 0,