Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 19 Feb 2005 03:53:00 GMT
From:      Scott Long <scottl@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 71284 for review
Message-ID:  <200502190353.j1J3r0TG075198@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=71284

Change 71284 by scottl@scottl-junior on 2005/02/19 03:52:53

	IFC: partial merge of cam_xpt.c rev 1.147

Affected files ...

.. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#10 integrate

Differences ...

==== //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#10 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.146 2005/01/05 22:34:34 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.147 2005/01/22 22:46:45 mjacob Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -76,6 +76,16 @@
 /* number of high powered commands that can go through right now */
 static int num_highpower = CAM_MAX_HIGHPOWER;
 
+/*
+ * If we're not quirked to search <= the first 8 luns
+ * and we are either quirked to search above lun 8,
+ * or we're > SCSI-2, we can look for luns above lun 8.
+ */
+#define	CAN_SRCH_HI(dv)					\
+  (((dv->quirk->quirks & CAM_QUIRK_NOHILUNS) == 0) 	\
+  && ((dv->quirk->quirks & CAM_QUIRK_HILUNS)		\
+  || SID_ANSI_REV(&dv->inq_data) > SCSI_REV_2))
+
 typedef enum {
 	XPT_FLAG_OPEN		= 0x01
 } xpt_flags;
@@ -5135,7 +5145,7 @@
 			s = splcam();
 			device = TAILQ_FIRST(&target->ed_entries);
 			if (device != NULL) {
-				phl = device->quirk->quirks & CAM_QUIRK_HILUNS;
+				phl = CAN_SRCH_HI(device);
 				if (device->lun_id == 0)
 					device = TAILQ_NEXT(device, links);
 			}
@@ -5151,8 +5161,8 @@
 
 			if ((device->quirk->quirks & CAM_QUIRK_NOLUNS) == 0) {
 				/* Try the next lun */
-				if (lun_id < (CAM_SCSI2_MAXLUN-1) ||
-				    (device->quirk->quirks & CAM_QUIRK_HILUNS))
+				if (lun_id < (CAM_SCSI2_MAXLUN-1)
+				  || CAN_SRCH_HI(device))
 					lun_id++;
 			}
 		}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200502190353.j1J3r0TG075198>