diff options
author | mav <mav@FreeBSD.org> | 2015-02-09 09:10:46 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2015-02-09 09:10:46 +0000 |
commit | 4bebe71c84f0bd0869c7bfaeca6c241e354baa56 (patch) | |
tree | 913dccf8648e8e1166f2d3a5c95aeb3853dd44e4 /sys/cam/cam_periph.c | |
parent | e82104dd187ea82cb8d346ac947106b35ee4cd46 (diff) | |
download | FreeBSD-src-4bebe71c84f0bd0869c7bfaeca6c241e354baa56.zip FreeBSD-src-4bebe71c84f0bd0869c7bfaeca6c241e354baa56.tar.gz |
MFC r278111: Retry indefinitely on SCSI BUSY status from VMware disks and CDs.
VMware returns BUSY status when storage has transient connectivity issues.
It is often better to wait and let VM admin fix the problem then crash.
Diffstat (limited to 'sys/cam/cam_periph.c')
-rw-r--r-- | sys/cam/cam_periph.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/cam/cam_periph.c b/sys/cam/cam_periph.c index 2e23996..87c1bdd 100644 --- a/sys/cam/cam_periph.c +++ b/sys/cam/cam_periph.c @@ -1359,8 +1359,8 @@ camperiphscsistatuserror(union ccb *ccb, union ccb **orig_ccb, * Restart the queue after either another * command completes or a 1 second timeout. */ - if (ccb->ccb_h.retry_count > 0) { - ccb->ccb_h.retry_count--; + if ((sense_flags & SF_RETRY_BUSY) != 0 || + (ccb->ccb_h.retry_count--) > 0) { error = ERESTART; *relsim_flags = RELSIM_RELEASE_AFTER_TIMEOUT | RELSIM_RELEASE_AFTER_CMDCMPLT; |