aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Guest <[email protected]>2017-12-21 06:42:07 +1300
committerBrian Behlendorf <[email protected]>2017-12-20 09:42:07 -0800
commit993669a7bf17a26843630c547999be0b27483497 (patch)
treee443e3501a3acf6ba4b993d16b4b3a22934c19ee
parent89a66a0457cd392ab8c6ad6d9c138fedaa425067 (diff)
vdev_id: new slot type ses
This extends vdev_id to support a new slot type, ses, for SCSI Enclosure Services. With slot type ses, the disk slot numbers are determined by using the device slot number reported by sg_ses for the device with matching SAS address, found by querying all available enclosures. This is primarily of use on systems with a deficient driver omitting support for bay_identifier in /sys/devices. In my testing, I found that the existing slot types of port and id were not stable across disk replacement, so an alternative was required. Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Simon Guest <[email protected]> Closes #6956
-rwxr-xr-xcmd/vdev_id/vdev_id17
-rw-r--r--man/man5/vdev_id.conf.58
2 files changed, 24 insertions, 1 deletions
diff --git a/cmd/vdev_id/vdev_id b/cmd/vdev_id/vdev_id
index 9fa2d672c..4c7b270a8 100755
--- a/cmd/vdev_id/vdev_id
+++ b/cmd/vdev_id/vdev_id
@@ -276,6 +276,23 @@ sas_handler() {
d=$(eval echo \${$i})
SLOT=`echo $d | sed -e 's/^.*://'`
;;
+ "ses")
+ # look for this SAS path in all SCSI Enclosure Services
+ # (SES) enclosures
+ sas_address=`cat $end_device_dir/sas_address 2>/dev/null`
+ enclosures=`lsscsi -g | \
+ sed -n -e '/enclosu/s/^.* \([^ ][^ ]*\) *$/\1/p'`
+ for enclosure in $enclosures; do
+ set -- $(sg_ses -p aes $enclosure | \
+ awk "/device slot number:/{slot=\$12} \
+ /SAS address: $sas_address/\
+ {print slot}")
+ SLOT=$1
+ if [ -n "$SLOT" ] ; then
+ break
+ fi
+ done
+ ;;
esac
if [ -z "$SLOT" ] ; then
return
diff --git a/man/man5/vdev_id.conf.5 b/man/man5/vdev_id.conf.5
index eff8c27cc..50caa92c0 100644
--- a/man/man5/vdev_id.conf.5
+++ b/man/man5/vdev_id.conf.5
@@ -90,7 +90,7 @@ internally uses this value to determine which HBA or switch port a
device is connected to. The default is 4.
.TP
-\fIslot\fR <bay|phy|port|id|lun>
+\fIslot\fR <bay|phy|port|id|lun|ses>
Specifies from which element of a SAS identifier the slot number is
taken. The default is bay.
@@ -103,6 +103,12 @@ taken. The default is bay.
\fIid\fR - use the scsi id as the slot number.
\fIlun\fR - use the scsi lun as the slot number.
+
+\fIses\fR - use the SCSI Enclosure Services (SES) enclosure device slot number,
+as reported by
+.BR sg_ses (8).
+This is intended for use only on systems where \fIbay\fR is unsupported,
+noting that \fIport\fR and \fIid\fR may be unstable across disk replacement.
.SH EXAMPLES
A non-multipath configuration with direct-attached SAS enclosures and an
arbitrary slot re-mapping.