Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 Mar 2015 18:09:50 +0000 (UTC)
From:      "Kenneth D. Merry" <ken@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r279534 - head/sys/cam/scsi
Message-ID:  <201503021809.t22I9oIC095372@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ken
Date: Mon Mar  2 18:09:49 2015
New Revision: 279534
URL: https://svnweb.freebsd.org/changeset/base/279534

Log:
  Change the sa(4) driver to check for long position support on
  SCSI-2 devices.
  
  Some older tape devices claim to be SCSI-2, but actually do support
  long position information.  (Long position information includes
  the current file mark.)  For example, the COMPAQ SuperDLT1.
  
  So we now only disable the check on SCSI-1 and older devices.
  
  sys/cam/scsi/scsi_sa.c:
  	In saregister(), only disable fetching long position
  	information on SCSI-1 and older drives.  Update the
  	comment to explain why.
  
  Confirmed by:	dvl
  Sponsored by:	Spectra Logic
  MFC after:	3 weeks

Modified:
  head/sys/cam/scsi/scsi_sa.c

Modified: head/sys/cam/scsi/scsi_sa.c
==============================================================================
--- head/sys/cam/scsi/scsi_sa.c	Mon Mar  2 18:08:39 2015	(r279533)
+++ head/sys/cam/scsi/scsi_sa.c	Mon Mar  2 18:09:49 2015	(r279534)
@@ -2396,9 +2396,13 @@ saregister(struct cam_periph *periph, vo
 	 * Long format data for READ POSITION was introduced in SSC, which
 	 * was after SCSI-2.  (Roughly equivalent to SCSI-3.)  If the drive
 	 * reports that it is SCSI-2 or older, it is unlikely to support
-	 * long position data.
+	 * long position data, but it might.  Some drives from that era
+	 * claim to be SCSI-2, but do support long position information.
+	 * So, instead of immediately disabling long position information
+	 * for SCSI-2 devices, we'll try one pass through sagetpos(), and 
+	 * then disable long position information if we get an error.   
 	 */
-	if (cgd->inq_data.version <= SCSI_REV_2)
+	if (cgd->inq_data.version <= SCSI_REV_CCS)
 		softc->quirks |= SA_QUIRK_NO_LONG_POS;
 
 	if (cgd->inq_data.spc3_flags & SPC3_SID_PROTECT) {



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