Better zfs_get_enclosure_sysfs_path() enclosure support
commit7e56b05058c8d2af2b5bc8b0b1475d9fdd6cd7dc
authorTony Hutter <hutter2@llnl.gov>
Sun, 21 Feb 2021 04:17:45 +0000 (20 20:17 -0800)
committerGitHub <noreply@github.com>
Sun, 21 Feb 2021 04:17:45 +0000 (20 20:17 -0800)
tree80f72c9dd2646e7c3e04c8b1c0dc9b0802ccbdfc
parentc0801bf35a09623a8f4422530550266c9fa143b5
Better zfs_get_enclosure_sysfs_path() enclosure support

A multpathed disk will have several 'underlying' paths to the disk.  For
example, multipath disk 'dm-0' may be made up of paths:
/dev/{sda,sdb,sdc,sdd}.  On many enclosures those underlying sysfs
paths will have a symlink back to their enclosure device entry
(like 'enclosure_device0/slot1').  This is used by the
statechange-led.sh script to set/clear the fault LED for a disk, and
by 'zpool status -c'.

However, on some enclosures, those underlying paths may not all have
symlinks back to the enclosure device.  Maybe only two out of four
of them might.

This patch updates zfs_get_enclosure_sysfs_path() to favor returning
paths that have symlinks back to their enclosure devices, rather
than just returning the first path.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tony Hutter <hutter2@llnl.gov>
Closes #11617
lib/libzutil/os/linux/zutil_device_path_os.c