# HG changeset patch # User Srikanth Suravajhala # Date 1280430970 25200 # Node ID 52a0d8a59353c954ba7c222525a71c963f733af5 # Parent 7d727ba2f2018a012a08be1c59bea0f8b487dda6 6952406 enumeration errors and disk failures during boot diff -r 7d727ba2f201 -r 52a0d8a59353 usr/src/uts/common/io/scsi/conf/scsi_confsubr.c --- a/usr/src/uts/common/io/scsi/conf/scsi_confsubr.c Thu Jul 29 11:58:13 2010 -0700 +++ b/usr/src/uts/common/io/scsi/conf/scsi_confsubr.c Thu Jul 29 12:16:10 2010 -0700 @@ -1023,7 +1023,7 @@ int scsi_probe(struct scsi_device *sd, int (*callback)()) { - int ret; + int ret, retry = 0; scsi_hba_tran_t *tran = sd->sd_address.a_hba_tran; if (scsi_check_ss2_LUN_limit(sd) != 0) { @@ -1033,13 +1033,21 @@ */ return (SCSIPROBE_NORESP); /* skip probing this one */ } - +again: if (tran->tran_tgt_probe != NULL) { ret = (*tran->tran_tgt_probe)(sd, callback); } else { ret = scsi_hba_probe(sd, callback); } + if ((ret != SCSIPROBE_EXISTS) && (retry == 0)) { + if (scsi_reset(&sd->sd_address, RESET_LUN) != 1) { + cmn_err(CE_WARN, "scsi_probe: scsi_reset failed"); + } + retry = 1; + goto again; + } + if (ret == SCSIPROBE_EXISTS) { create_inquiry_props(sd); /* is this a strictly-SCSI-2 node ?? */