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
This commit is contained in:
ken 2015-03-02 18:09:49 +00:00
parent 2f529cb858
commit a9347ea330

View File

@ -2396,9 +2396,13 @@ saregister(struct cam_periph *periph, void *arg)
* 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) {