Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 8 May 2017 18:30:55 +0000 (UTC)
From:      "Kenneth D. Merry" <ken@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r317965 - stable/11/sbin/camcontrol
Message-ID:  <201705081830.v48IUt6Y073960@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ken
Date: Mon May  8 18:30:55 2017
New Revision: 317965
URL: https://svnweb.freebsd.org/changeset/base/317965

Log:
  MFC r317854:
  
    When editing a mode page on a tape drive, do not clear the device
    specific parameter.
  
    Tape drives include write protect (WP), Buffered Mode and Speed
    settings in the device-specific parameter.  Clearing this
    parameter on a mode select can have the effect of turning off
    write protect or buffered mode, or changing the speed setting of
    the tape drive.
  
    Disks report DPO/FUA support via the device specific parameter
    for MODE SENSE, but the bit is reserved for MODE SELECT.  So we
    clear this for disks (and other non-tape devices) to avoid
    potential errors from the target device.
  
    sbin/camcontrol/modeedit.c:
    	Clear the device-specific parameter in the mode page
    	header if we're not operating on a tape drive.
  
  Sponsored by:	Spectra Logic

Modified:
  stable/11/sbin/camcontrol/modeedit.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sbin/camcontrol/modeedit.c
==============================================================================
--- stable/11/sbin/camcontrol/modeedit.c	Mon May  8 17:55:51 2017	(r317964)
+++ stable/11/sbin/camcontrol/modeedit.c	Mon May  8 18:30:55 2017	(r317965)
@@ -629,8 +629,21 @@ editlist_save(struct cam_device *device,
 
 	/* Recalculate headers & offsets. */
 	mh->data_length = 0;		/* Reserved for MODE SELECT command. */
-	mh->dev_spec = 0;		/* Clear device-specific parameters. */
 	mh->blk_desc_len = 0;		/* No block descriptors. */
+	/*
+	 * Tape drives include write protect (WP), Buffered Mode and Speed
+	 * settings in the device-specific parameter.  Clearing this
+	 * parameter on a mode select can have the effect of turning off
+	 * write protect or buffered mode, or changing the speed setting of
+	 * the tape drive.
+	 *
+	 * Disks report DPO/FUA support via the device specific parameter
+	 * for MODE SENSE, but the bit is reserved for MODE SELECT.  So we
+	 * clear this for disks (and other non-tape devices) to avoid
+	 * potential errors from the target device.
+	 */
+	if (device->pd_type != T_SEQUENTIAL)
+		mh->dev_spec = 0;
 	mph = MODE_PAGE_HEADER(mh);
 	mph->page_code &= ~SMPH_PS;	/* Reserved for MODE SELECT command. */
 



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