svn commit: r300880 - in head: . sys/cam/scsi
Alan Somers
asomers at FreeBSD.org
Fri May 27 22:26:45 UTC 2016
Author: asomers
Date: Fri May 27 22:26:43 2016
New Revision: 300880
URL: https://svnweb.freebsd.org/changeset/base/300880
Log:
Strip leading spaces off of a SCSI disk's serial number
sys/cam/scsi/scsi_xpt.c
Strip leading spaces off of a SCSI disk's reported serial number
when populating the CAM serial number. This affects the output of
"diskinfo -v" and the names of /dev/diskid/DISK-* device nodes,
among other things.
SPC5r05 says that the Product Serial Number field from the Unit
Serial Number VPD page is right-aligned. So any leading spaces are
not part of the actual serial number. Most devices don't left-pad
their serial numbers, but some do. In particular, the SN VPD page
that an LSI HBA emulates for a SATA drive contains enough
left-padding to fill a 20-byte field.
UPDATING
Add a note to UPDATING, because some users may have to update
/etc/fstab or geom labels.
Reviewed by: ken, mav
MFC after: Never
Sponsored by: Spectra Logic Corp
Differential Revision: https://reviews.freebsd.org/D6516
Modified:
head/UPDATING
head/sys/cam/scsi/scsi_xpt.c
Modified: head/UPDATING
==============================================================================
--- head/UPDATING Fri May 27 22:16:46 2016 (r300879)
+++ head/UPDATING Fri May 27 22:26:43 2016 (r300880)
@@ -31,6 +31,16 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11
disable the most expensive debugging functionality run
"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
+20160527:
+ CAM will now strip leading spaces from SCSI disks' serial numbers.
+ This will effect users who create UFS filesystems on SCSI disks using
+ those disk's diskid device nodes. For example, if /etc/fstab
+ previously contained a line like
+ "/dev/diskid/DISK-%20%20%20%20%20%20%20ABCDEFG0123456", you should
+ change it to "/dev/diskid/DISK-ABCDEFG0123456". Users of geom
+ transfers like gmirror may also be affected. ZFS users should
+ generally be fine.
+
20160523:
The bitstring(3) API has been updated with new functionality and
improved performance. But it is binary-incompatible with the old API.
Modified: head/sys/cam/scsi/scsi_xpt.c
==============================================================================
--- head/sys/cam/scsi/scsi_xpt.c Fri May 27 22:16:46 2016 (r300879)
+++ head/sys/cam/scsi/scsi_xpt.c Fri May 27 22:26:43 2016 (r300880)
@@ -1559,13 +1559,22 @@ probe_device_check:
(u_int8_t *)malloc((serial_buf->length + 1),
M_CAMXPT, M_NOWAIT);
if (path->device->serial_num != NULL) {
+ int start, slen;
+
+ start = strspn(serial_buf->serial_num, " ");
+ slen = serial_buf->length - start;
+ if (slen <= 0) {
+ /*
+ * SPC5r05 says that an all-space serial
+ * number means no product serial number
+ * is available
+ */
+ slen = 0;
+ }
memcpy(path->device->serial_num,
- serial_buf->serial_num,
- serial_buf->length);
- path->device->serial_num_len =
- serial_buf->length;
- path->device->serial_num[serial_buf->length]
- = '\0';
+ &serial_buf->serial_num[start], slen);
+ path->device->serial_num_len = slen;
+ path->device->serial_num[slen] = '\0';
}
} else if (cam_periph_error(done_ccb, 0,
SF_RETRY_UA|SF_NO_PRINT,
More information about the svn-src-head
mailing list