svn commit: r317966 - stable/10/sbin/camcontrol
Kenneth D. Merry
ken at FreeBSD.org
Mon May 8 18:30:58 UTC 2017
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. */
More information about the svn-src-stable-10
mailing list