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;
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to