Put an upper bound on the number of BUSY status retries we'll do (use the
retry count for the ccb). This is probably not quite the right thing, but it is better than silently hanging on (possibly broken) h/w which is what we do now. Reviewed by:Justin/Ken: they weren't entirely happy about it but didn't say no.
This commit is contained in:
parent
0642b69a16
commit
af51b059b5
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=52326
@ -1522,15 +1522,18 @@ cam_periph_error(union ccb *ccb, cam_flags camflags,
|
||||
/*
|
||||
* Restart the queue after either another
|
||||
* command completes or a 1 second timeout.
|
||||
* If we have any retries left, that is.
|
||||
*/
|
||||
/*
|
||||
* XXX KDM ask JTG about this again, do we need to
|
||||
* be looking at the retry count here?
|
||||
*/
|
||||
error = ERESTART;
|
||||
relsim_flags = RELSIM_RELEASE_AFTER_TIMEOUT
|
||||
| RELSIM_RELEASE_AFTER_CMDCMPLT;
|
||||
timeout = 1000;
|
||||
retry = ccb->ccb_h.retry_count > 0;
|
||||
if (retry) {
|
||||
ccb->ccb_h.retry_count--;
|
||||
error = ERESTART;
|
||||
relsim_flags = RELSIM_RELEASE_AFTER_TIMEOUT
|
||||
| RELSIM_RELEASE_AFTER_CMDCMPLT;
|
||||
timeout = 1000;
|
||||
} else {
|
||||
error = EIO;
|
||||
}
|
||||
break;
|
||||
case SCSI_STATUS_RESERV_CONFLICT:
|
||||
error = EIO;
|
||||
|
Loading…
Reference in New Issue
Block a user