vdev_id: implement slot numbering by port id

With HPE hardware and hpsa-driven SAS adapters, only a single phy is
reported, but no individual per-port phys (ie. no phy* entry below
port_dir), which breaks topology detection in the current sas_handler
code. Instead, slot information can be derived directly from the port
number. This change implements a new slot keyword "port" similar to
"id" and "lun", and assumes a default phy/port of 0 if no individual
phy entry can be found. It allows to use the "sas_direct" topology with
current HPE Dxxxx and Apollo 45xx JBODs.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Daniel Kobras <d.kobras@science-computing.de>
Closes #6484
This commit is contained in:
sckobras
2017-08-15 00:18:26 +02:00
committed by Tony Hutter
parent aec4318870
commit 426563be70
2 changed files with 8 additions and 2 deletions
+5 -1
View File
@@ -237,7 +237,7 @@ sas_handler() {
PHY=`ls -d $port_dir/phy* 2>/dev/null | head -1 | awk -F: '{print $NF}'`
if [ -z "$PHY" ] ; then
return
PHY=0
fi
PORT=$(( $PHY / $PHYS_PER_PORT ))
@@ -262,6 +262,10 @@ sas_handler() {
"phy")
SLOT=`cat $end_device_dir/phy_identifier 2>/dev/null`
;;
"port")
d=$(eval echo \${$i})
SLOT=`echo $d | sed -e 's/^.*://'`
;;
"id")
i=$(($i + 1))
d=$(eval echo \${$i})