Author: ken
Date: Mon May  8 18:30:56 2017
New Revision: 317966
URL: https://svnweb.freebsd.org/changeset/base/317966

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/10/sbin/camcontrol/modeedit.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sbin/camcontrol/modeedit.c
==============================================================================
--- stable/10/sbin/camcontrol/modeedit.c        Mon May  8 18:30:55 2017        
(r317965)
+++ stable/10/sbin/camcontrol/modeedit.c        Mon May  8 18:30:56 2017        
(r317966)
@@ -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. */
 
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to