From d49d9c2bdc31263536d3b714d7e393b66321886a Mon Sep 17 00:00:00 2001 From: sckobras Date: Tue, 15 Aug 2017 00:18:26 +0200 Subject: 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 Signed-off-by: Daniel Kobras Closes #6484 --- cmd/vdev_id/vdev_id | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'cmd') diff --git a/cmd/vdev_id/vdev_id b/cmd/vdev_id/vdev_id index c7d962045..a2cba086e 100755 --- a/cmd/vdev_id/vdev_id +++ b/cmd/vdev_id/vdev_id @@ -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}) -- cgit v1.2.3