changeset 11167:d98b4f6cde53

6903241 device state recovery on phy may be dropped if invoked too soon again
author Srikanth, Ramana <Ramana.Srikanth@Sun.COM>
date Mon, 23 Nov 2009 18:29:31 -0500
parents bd18fd1ac16d
children cc3c23bc7a90
files usr/src/uts/common/io/scsi/adapters/pmcs/pmcs_ds.c
diffstat 1 files changed, 8 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/io/scsi/adapters/pmcs/pmcs_ds.c	Mon Nov 23 10:32:32 2009 -0800
+++ b/usr/src/uts/common/io/scsi/adapters/pmcs/pmcs_ds.c	Mon Nov 23 18:29:31 2009 -0500
@@ -215,6 +215,7 @@
 void
 pmcs_dev_state_recovery(pmcs_hw_t *pwp, pmcs_phy_t *phyp)
 {
+	boolean_t reschedule = B_FALSE;
 	uint8_t	ds, tgt_dev_state;
 	int rc;
 	pmcs_xscsi_t *tgt;
@@ -278,6 +279,9 @@
 				    "%s: DS recovery on PHY %s "
 				    "re-invoked too soon. Skipping...",
 				    __func__, pptr->path);
+				if ((tgt) && (tgt->recover_wait)) {
+					reschedule = B_TRUE;
+				}
 				goto next_phy;
 			}
 		}
@@ -453,6 +457,10 @@
 		pwp->ds_err_recovering = 0;
 		mutex_exit(&pwp->lock);
 	}
+
+	if (reschedule) {
+		SCHEDULE_WORK(pwp, PMCS_WORK_DS_ERR_RECOVERY);
+	}
 }
 
 /*