Mercurial > illumos > illumos-gate
changeset 12971:52a0d8a59353
6952406 enumeration errors and disk failures during boot
author | Srikanth Suravajhala <srikanth.suravajhala@oracle.com> |
---|---|
date | Thu, 29 Jul 2010 12:16:10 -0700 |
parents | 7d727ba2f201 |
children | daef03a98f12 |
files | usr/src/uts/common/io/scsi/conf/scsi_confsubr.c |
diffstat | 1 files changed, 10 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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 ?? */