svn commit: r203146 - head/sys/dev/usb/storage
Andrew Thompson
thompsa at FreeBSD.org
Fri Jan 29 02:38:35 UTC 2010
Author: thompsa
Date: Fri Jan 29 02:38:34 2010
New Revision: 203146
URL: http://svn.freebsd.org/changeset/base/203146
Log:
Rework cam error handling to fix Mitsumi floppy drives.
Submitted by: mav
Modified:
head/sys/dev/usb/storage/umass.c
Modified: head/sys/dev/usb/storage/umass.c
==============================================================================
--- head/sys/dev/usb/storage/umass.c Fri Jan 29 02:35:50 2010 (r203145)
+++ head/sys/dev/usb/storage/umass.c Fri Jan 29 02:38:34 2010 (r203146)
@@ -2594,11 +2594,19 @@ umass_cam_cb(struct umass_softc *sc, uni
default:
/*
- * the wire protocol failed and will have recovered
- * (hopefully). We return an error to CAM and let CAM retry
- * the command if necessary.
+ * The wire protocol failed and will hopefully have
+ * recovered. We return an error to CAM and let CAM
+ * retry the command if necessary. In case of SCSI IO
+ * commands we ask the CAM layer to check the
+ * condition first. This is a quick hack to make
+ * certain devices work.
*/
- ccb->ccb_h.status = CAM_REQ_CMP_ERR;
+ if (ccb->ccb_h.func_code == XPT_SCSI_IO) {
+ ccb->ccb_h.status = CAM_SCSI_STATUS_ERROR;
+ ccb->csio.scsi_status = SCSI_STATUS_CHECK_COND;
+ } else {
+ ccb->ccb_h.status = CAM_REQ_CMP_ERR;
+ }
xpt_done(ccb);
break;
}
More information about the svn-src-all
mailing list