mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 03:09:34 +03:00
vdev_id fails to handle complex device topologies
While expanding positional parameters shell requires non-single digits to be enclosed in braces. When the SAS topology is non-trivial the number of positional parameters generated internally by vdev_id script (using set -- ...) easily crosses single digit limit and vdev_id fails to generate links. Signed-off-by: Ned Bass <bass6@llnl.gov> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #1119
This commit is contained in:
parent
a6ef9522ea
commit
38b344d22a
@ -236,7 +236,7 @@ scsi_host_dir="/sys"
|
|||||||
# Get path up to /sys/.../hostX
|
# Get path up to /sys/.../hostX
|
||||||
i=1
|
i=1
|
||||||
while [ $i -le $num_dirs ] ; do
|
while [ $i -le $num_dirs ] ; do
|
||||||
d=$(eval echo \$$i)
|
d=$(eval echo \${$i})
|
||||||
scsi_host_dir="$scsi_host_dir/$d"
|
scsi_host_dir="$scsi_host_dir/$d"
|
||||||
echo $d | grep -q -E '^host[0-9]+$' && break
|
echo $d | grep -q -E '^host[0-9]+$' && break
|
||||||
i=$(($i + 1))
|
i=$(($i + 1))
|
||||||
@ -246,7 +246,7 @@ if [ $i = $num_dirs ] ; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PCI_ID=$(eval echo \$$(($i -1)) | awk -F: '{print $2":"$3}')
|
PCI_ID=$(eval echo \${$(($i -1))} | awk -F: '{print $2":"$3}')
|
||||||
|
|
||||||
# In sas_switch mode, the directory four levels beneath /sys/.../hostX
|
# In sas_switch mode, the directory four levels beneath /sys/.../hostX
|
||||||
# contains symlinks to phy devices that reveal the switch port number. In
|
# contains symlinks to phy devices that reveal the switch port number. In
|
||||||
@ -259,7 +259,7 @@ esac
|
|||||||
|
|
||||||
i=$(($i + 1))
|
i=$(($i + 1))
|
||||||
while [ $i -le $j ] ; do
|
while [ $i -le $j ] ; do
|
||||||
port_dir="$port_dir/$(eval echo \$$i)"
|
port_dir="$port_dir/$(eval echo \${$i})"
|
||||||
i=$(($i + 1))
|
i=$(($i + 1))
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -273,7 +273,7 @@ PORT=$(( $PHY / $PHYS_PER_PORT ))
|
|||||||
# attribute.
|
# attribute.
|
||||||
end_device_dir=$port_dir
|
end_device_dir=$port_dir
|
||||||
while [ $i -lt $num_dirs ] ; do
|
while [ $i -lt $num_dirs ] ; do
|
||||||
d=$(eval echo \$$i)
|
d=$(eval echo \${$i})
|
||||||
end_device_dir="$end_device_dir/$d"
|
end_device_dir="$end_device_dir/$d"
|
||||||
if echo $d | grep -q '^end_device' ; then
|
if echo $d | grep -q '^end_device' ; then
|
||||||
end_device_dir="$end_device_dir/sas_device/$d"
|
end_device_dir="$end_device_dir/sas_device/$d"
|
||||||
|
Loading…
Reference in New Issue
Block a user