Author: mav
Date: Sun Nov  2 17:25:03 2014
New Revision: 273975
URL: https://svnweb.freebsd.org/changeset/base/273975

Log:
  MFC r272406:
  Make disconnected LUN 0 don't remain in half-configured state if there are
  no LUNs on SPC-3 target after we tried REPORT LUNS.

Modified:
  stable/10/sys/cam/scsi/scsi_xpt.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/cam/scsi/scsi_xpt.c
==============================================================================
--- stable/10/sys/cam/scsi/scsi_xpt.c   Sun Nov  2 17:23:44 2014        
(r273974)
+++ stable/10/sys/cam/scsi/scsi_xpt.c   Sun Nov  2 17:25:03 2014        
(r273975)
@@ -1197,12 +1197,6 @@ out:
                            SID_ANSI_REV(inq_buf) > SCSI_REV_SPC2 &&
                            (SCSI_QUIRK(path->device)->quirks &
                             CAM_QUIRK_NORPTLUNS) == 0) {
-                               if (path->device->flags &
-                                   CAM_DEV_UNCONFIGURED) {
-                                       path->device->flags &=
-                                           ~CAM_DEV_UNCONFIGURED;
-                                       xpt_acquire_device(path->device);
-                               }
                                PROBE_SET_ACTION(softc, PROBE_REPORT_LUNS);
                                periph->path->target->rpl_size = 16;
                                xpt_release_ccb(done_ccb);
@@ -1313,14 +1307,6 @@ out:
                                            tlun, 8);
                                        CAM_DEBUG(path, CAM_DEBUG_PROBE,
                                            ("lun 0 in position %u\n", idx));
-                               } else {
-                                       /*
-                                        * There is no lun 0 in our list. 
Destroy
-                                        * the validity of the inquiry data so 
we
-                                        * bail here and now.
-                                        */
-                                       path->device->flags &=
-                                           ~CAM_DEV_INQUIRY_DATA_VALID;
                                }
                        }
                        /*
@@ -1333,7 +1319,8 @@ out:
                        probe_purge_old(path, lp, softc->flags);
                        lp = NULL;
                }
-               if (path->device->flags & CAM_DEV_INQUIRY_DATA_VALID) {
+               if (path->device->flags & CAM_DEV_INQUIRY_DATA_VALID &&
+                   SID_QUAL(&path->device->inq_data) == SID_QUAL_LU_CONNECTED) 
{
                        struct scsi_inquiry_data *inq_buf;
                        inq_buf = &path->device->inq_data;
                        if (INQ_DATA_TQ_ENABLED(inq_buf))
@@ -1348,6 +1335,8 @@ out:
                if (lp) {
                        free(lp, M_CAMXPT);
                }
+               PROBE_SET_ACTION(softc, PROBE_INVALID);
+               xpt_release_ccb(done_ccb);
                break;
        }
        case PROBE_MODE_SENSE:
_______________________________________________
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