Add extra keyword 'slot' to vdev_id.conf

Add new keyword 'slot' to vdev_id.conf
This selects from where to get the slot number for a SAS/SATA disk
Needed to enable access to the physical position of a disk in a
Supermicro 2027R-AR24NV .

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ned Bass <bass6@llnl.gov>
Closes #3693
This commit is contained in:
Andreas Buschmann 2015-08-19 13:01:40 +02:00 committed by Brian Behlendorf
parent d439f63ff5
commit bba365cfc8
2 changed files with 40 additions and 1 deletions

View File

@ -32,6 +32,7 @@
# multipath no # multipath no
# topology sas_direct # topology sas_direct
# phys_per_port 4 # phys_per_port 4
# slot bay
# #
# # PCI_ID HBA PORT CHANNEL NAME # # PCI_ID HBA PORT CHANNEL NAME
# channel 85:00.0 1 A # channel 85:00.0 1 A
@ -93,6 +94,7 @@ PHYS_PER_PORT=
DEV= DEV=
MULTIPATH= MULTIPATH=
TOPOLOGY= TOPOLOGY=
BAY=
usage() { usage() {
cat << EOF cat << EOF
@ -252,7 +254,25 @@ sas_handler() {
i=$(($i + 1)) i=$(($i + 1))
done done
SLOT=`cat $end_device_dir/bay_identifier 2>/dev/null` SLOT=
case $BAY in
"bay")
SLOT=`cat $end_device_dir/bay_identifier 2>/dev/null`
;;
"phy")
SLOT=`cat $end_device_dir/phy_identifier 2>/dev/null`
;;
"id")
i=$(($i + 1))
d=$(eval echo \${$i})
SLOT=`echo $d | sed -e 's/^.*://'`
;;
"lun")
i=$(($i + 2))
d=$(eval echo \${$i})
SLOT=`echo $d | sed -e 's/^.*://'`
;;
esac
if [ -z "$SLOT" ] ; then if [ -z "$SLOT" ] ; then
return return
fi fi
@ -356,10 +376,15 @@ if [ -z "$TOPOLOGY" ] ; then
TOPOLOGY=`awk "\\$1 == \"topology\" {print \\$2; exit}" $CONFIG` TOPOLOGY=`awk "\\$1 == \"topology\" {print \\$2; exit}" $CONFIG`
fi fi
if [ -z "$BAY" ] ; then
BAY=`awk "\\$1 == \"slot\" {print \\$2; exit}" $CONFIG`
fi
# First check if an alias was defined for this device. # First check if an alias was defined for this device.
ID_VDEV=`alias_handler` ID_VDEV=`alias_handler`
if [ -z "$ID_VDEV" ] ; then if [ -z "$ID_VDEV" ] ; then
BAY=${BAY:-bay}
TOPOLOGY=${TOPOLOGY:-sas_direct} TOPOLOGY=${TOPOLOGY:-sas_direct}
case $TOPOLOGY in case $TOPOLOGY in
sas_direct|sas_switch) sas_direct|sas_switch)

View File

@ -88,6 +88,19 @@ switch port.
.BR vdev_id (8) .BR vdev_id (8)
internally uses this value to determine which HBA or switch port a internally uses this value to determine which HBA or switch port a
device is connected to. The default is 4. device is connected to. The default is 4.
.TP
\fIslot\fR <bay|phy|id|lun>
Specifies from which element of a SAS identifier the slot number is
taken. The default is bay.
\fIbay\fR - read the slot number from the bay identifier.
\fIphy\fR - read the slot number from the phy identifier.
\fIid\fR - use the scsi id as the slot number.
\fIlun\fR - use the scsi lun as the slot number.
.SH EXAMPLES .SH EXAMPLES
A non-multipath configuration with direct-attached SAS enclosures and an A non-multipath configuration with direct-attached SAS enclosures and an
arbitrary slot re-mapping. arbitrary slot re-mapping.
@ -96,6 +109,7 @@ arbitrary slot re-mapping.
multipath no multipath no
topology sas_direct topology sas_direct
phys_per_port 4 phys_per_port 4
slot bay
# PCI_SLOT HBA PORT CHANNEL NAME # PCI_SLOT HBA PORT CHANNEL NAME
channel 85:00.0 1 A channel 85:00.0 1 A