svn commit: r250144 - in stable/9/sys: cam/scsi dev/usb/storage
Alexander Motin
mav at FreeBSD.org
Wed May 1 11:10:16 UTC 2013
Author: mav
Date: Wed May 1 11:10:15 2013
New Revision: 250144
URL: http://svnweb.freebsd.org/changeset/base/250144
Log:
MFC r245647 (by kan):
Do not pretend to have autosense data when no such data is available.
Make umass return an error code if SCSI sense retrieval request
has failed. Make sure scsi_error_action honors SF_NO_RETRY and
SF_NO_RECOVERY in all cases, even if it cannot parse sense bytes.
Modified:
stable/9/sys/cam/scsi/scsi_all.c
stable/9/sys/dev/usb/storage/umass.c
Directory Properties:
stable/9/sys/ (props changed)
stable/9/sys/dev/ (props changed)
Modified: stable/9/sys/cam/scsi/scsi_all.c
==============================================================================
--- stable/9/sys/cam/scsi/scsi_all.c Wed May 1 09:56:09 2013 (r250143)
+++ stable/9/sys/cam/scsi/scsi_all.c Wed May 1 11:10:15 2013 (r250144)
@@ -3071,16 +3071,15 @@ scsi_error_action(struct ccb_scsiio *csi
SSQ_PRINT_SENSE;
}
}
- if ((action & SS_MASK) >= SS_START &&
- (sense_flags & SF_NO_RECOVERY)) {
- action &= ~SS_MASK;
- action |= SS_FAIL;
- } else if ((action & SS_MASK) == SS_RETRY &&
- (sense_flags & SF_NO_RETRY)) {
- action &= ~SS_MASK;
- action |= SS_FAIL;
- }
-
+ }
+ if ((action & SS_MASK) >= SS_START &&
+ (sense_flags & SF_NO_RECOVERY)) {
+ action &= ~SS_MASK;
+ action |= SS_FAIL;
+ } else if ((action & SS_MASK) == SS_RETRY &&
+ (sense_flags & SF_NO_RETRY)) {
+ action &= ~SS_MASK;
+ action |= SS_FAIL;
}
if ((sense_flags & SF_PRINT_ALWAYS) != 0)
action |= SSQ_PRINT_SENSE;
Modified: stable/9/sys/dev/usb/storage/umass.c
==============================================================================
--- stable/9/sys/dev/usb/storage/umass.c Wed May 1 09:56:09 2013 (r250143)
+++ stable/9/sys/dev/usb/storage/umass.c Wed May 1 11:10:15 2013 (r250144)
@@ -2602,9 +2602,13 @@ umass_cam_sense_cb(struct umass_softc *s
}
} else {
xpt_freeze_devq(ccb->ccb_h.path, 1);
- ccb->ccb_h.status = CAM_SCSI_STATUS_ERROR
- | CAM_AUTOSNS_VALID | CAM_DEV_QFRZN;
- ccb->csio.scsi_status = SCSI_STATUS_CHECK_COND;
+ if (key >= 0) {
+ ccb->ccb_h.status = CAM_SCSI_STATUS_ERROR
+ | CAM_AUTOSNS_VALID | CAM_DEV_QFRZN;
+ ccb->csio.scsi_status = SCSI_STATUS_CHECK_COND;
+ } else
+ ccb->ccb_h.status = CAM_AUTOSENSE_FAIL
+ | CAM_DEV_QFRZN;
}
xpt_done(ccb);
break;
More information about the svn-src-stable-9
mailing list