vdev_id: Create symlinks even if no /dev/mapper/
vdev_id uses the /dev/mapper/ symlinks to resolve a UUID to a dm name (like dm-1). However on some multipath setups, there is no /dev/mapper/ entry for the UUID at the time vdev_id is called by udev. However, this isn't necessarily needed, as we may be able to resolve the dm name from the $DEVNAME that udev passes us (like DEVNAME="/dev/dm-1"). This patch tries to resolve the dm name from $DEVNAME first, before falling back to looking in /dev/mapper/. This fixed an issue where the by-vdev names weren't reliably showing up on one of our nodes. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Tony Hutter <hutter2@llnl.gov> Closes #11698
This commit is contained in:
parent
b2eebe3ae7
commit
4fdbd43450
|
@ -298,8 +298,15 @@ sas_handler() {
|
||||||
|
|
||||||
# Utilize DM device name to gather subordinate block devices
|
# Utilize DM device name to gather subordinate block devices
|
||||||
# using sysfs to avoid userspace utilities
|
# using sysfs to avoid userspace utilities
|
||||||
DMDEV=$(ls -l --full-time /dev/mapper | grep $DM_NAME |
|
|
||||||
|
# If our DEVNAME is something like /dev/dm-177, then we may be
|
||||||
|
# able to get our DMDEV from it.
|
||||||
|
DMDEV=$(echo $DEVNAME | sed 's;/dev/;;g')
|
||||||
|
if [ ! -e /sys/block/$DMDEV/slaves/* ] ; then
|
||||||
|
# It's not there, try looking in /dev/mapper
|
||||||
|
DMDEV=$(ls -l --full-time /dev/mapper | grep $DM_NAME |
|
||||||
awk '{gsub("../", " "); print $NF}')
|
awk '{gsub("../", " "); print $NF}')
|
||||||
|
fi
|
||||||
|
|
||||||
# Use sysfs pointers in /sys/block/dm-X/slaves because using
|
# Use sysfs pointers in /sys/block/dm-X/slaves because using
|
||||||
# userspace tools creates lots of overhead and should be avoided
|
# userspace tools creates lots of overhead and should be avoided
|
||||||
|
|
Loading…
Reference in New Issue