From 71cd87c66c01245e6402e295cabedca2f8d48082 Mon Sep 17 00:00:00 2001 From: Alan Somers Date: Tue, 12 Sep 2017 19:36:24 +0000 Subject: [PATCH] Remove spaces from CTL devices' default serial numbers It's awkward to have spaces in CAM device serial numbers. That leads to such things as device nodes named "/dev/diskid/MYSERIAL%20%20%201". Better to replace the spaces with "0"s. This change only affects the default serial numbers for users who don't provide their own. Reviewed by: ken, mav MFC after: Never Relnotes: Yes Sponsored by: Spectra Logic Corp Differential Revision: https://reviews.freebsd.org/D12263 --- UPDATING | 7 +++++++ sys/cam/ctl/ctl_backend_block.c | 4 ++-- sys/cam/ctl/ctl_backend_ramdisk.c | 4 ++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/UPDATING b/UPDATING index 231cdf25fd72..7d109a5de103 100644 --- a/UPDATING +++ b/UPDATING @@ -51,6 +51,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW: ****************************** SPECIAL WARNING: ****************************** +20170912: + The default serial number format for CTL LUNs has changed. This will + affect users who use /dev/diskid/* device nodes, or whose FibreChannel + or iSCSI clients care about their LUNs' serial numbers. Users who + require serial number stability should hardcode serial numbers in + /etc/ctl.conf . + 20170912: For 32-bit arm compiled for hard-float support, soft-floating point binaries now always get their shared libraries from diff --git a/sys/cam/ctl/ctl_backend_block.c b/sys/cam/ctl/ctl_backend_block.c index ab71f8cec134..4038add6bf89 100644 --- a/sys/cam/ctl/ctl_backend_block.c +++ b/sys/cam/ctl/ctl_backend_block.c @@ -2324,7 +2324,7 @@ ctl_be_block_create(struct ctl_be_block_softc *softc, struct ctl_lun_req *req) cbe_lun->be = &ctl_be_block_driver; if ((params->flags & CTL_LUN_FLAG_SERIAL_NUM) == 0) { - snprintf(tmpstr, sizeof(tmpstr), "MYSERIAL%4d", + snprintf(tmpstr, sizeof(tmpstr), "MYSERIAL%04d", softc->num_luns); strncpy((char *)cbe_lun->serial_num, tmpstr, MIN(sizeof(cbe_lun->serial_num), sizeof(tmpstr))); @@ -2338,7 +2338,7 @@ ctl_be_block_create(struct ctl_be_block_softc *softc, struct ctl_lun_req *req) sizeof(params->serial_num))); } if ((params->flags & CTL_LUN_FLAG_DEVID) == 0) { - snprintf(tmpstr, sizeof(tmpstr), "MYDEVID%4d", softc->num_luns); + snprintf(tmpstr, sizeof(tmpstr), "MYDEVID%04d", softc->num_luns); strncpy((char *)cbe_lun->device_id, tmpstr, MIN(sizeof(cbe_lun->device_id), sizeof(tmpstr))); diff --git a/sys/cam/ctl/ctl_backend_ramdisk.c b/sys/cam/ctl/ctl_backend_ramdisk.c index 3b982a7c0e39..3730327653ce 100644 --- a/sys/cam/ctl/ctl_backend_ramdisk.c +++ b/sys/cam/ctl/ctl_backend_ramdisk.c @@ -1096,7 +1096,7 @@ ctl_backend_ramdisk_create(struct ctl_be_ramdisk_softc *softc, cbe_lun->lun_config_status = ctl_backend_ramdisk_lun_config_status; cbe_lun->be = &ctl_be_ramdisk_driver; if ((params->flags & CTL_LUN_FLAG_SERIAL_NUM) == 0) { - snprintf(tmpstr, sizeof(tmpstr), "MYSERIAL%4d", + snprintf(tmpstr, sizeof(tmpstr), "MYSERIAL%04d", softc->num_luns); strncpy((char *)cbe_lun->serial_num, tmpstr, MIN(sizeof(cbe_lun->serial_num), sizeof(tmpstr))); @@ -1110,7 +1110,7 @@ ctl_backend_ramdisk_create(struct ctl_be_ramdisk_softc *softc, sizeof(params->serial_num))); } if ((params->flags & CTL_LUN_FLAG_DEVID) == 0) { - snprintf(tmpstr, sizeof(tmpstr), "MYDEVID%4d", softc->num_luns); + snprintf(tmpstr, sizeof(tmpstr), "MYDEVID%04d", softc->num_luns); strncpy((char *)cbe_lun->device_id, tmpstr, MIN(sizeof(cbe_lun->device_id), sizeof(tmpstr)));