svn commit: r272406 - head/sys/cam/scsi

Alexander Motin mav at FreeBSD.org
Thu Oct 2 10:39:08 UTC 2014


Author: mav
Date: Thu Oct  2 10:39:07 2014
New Revision: 272406
URL: https://svnweb.freebsd.org/changeset/base/272406

Log:
  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:
  head/sys/cam/scsi/scsi_xpt.c

Modified: head/sys/cam/scsi/scsi_xpt.c
==============================================================================
--- head/sys/cam/scsi/scsi_xpt.c	Thu Oct  2 10:37:56 2014	(r272405)
+++ head/sys/cam/scsi/scsi_xpt.c	Thu Oct  2 10:39:07 2014	(r272406)
@@ -1194,12 +1194,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);
@@ -1310,14 +1304,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;
 				}
 			}
 			/*
@@ -1330,7 +1316,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))
@@ -1345,6 +1332,8 @@ out:
 		if (lp) {
 			free(lp, M_CAMXPT);
 		}
+		PROBE_SET_ACTION(softc, PROBE_INVALID);
+		xpt_release_ccb(done_ccb);
 		break;
 	}
 	case PROBE_MODE_SENSE:


More information about the svn-src-all mailing list