]> granicus.if.org Git - zfs/commitdiff
vdev_id: fix failure due to multipath -l bug
authorNed Bass <bass6@llnl.gov>
Thu, 20 Apr 2017 19:10:55 +0000 (12:10 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 20 Apr 2017 19:10:55 +0000 (12:10 -0700)
Udev may fail to create the expected symbolic links in
/dev/disk/by-vdev on systems with the
device-mapper-multipath-0.4.9-100.el6 package installed. This affects
RHEL 6.9 and possibly other downstream distributions.

That version of the multipath command may incorrectly list a drive
state as "unkown" instead of "running". The issue was introduced
in the patch for https://bugzilla.redhat.com/show_bug.cgi?id=1401769

The vdev_id udev helper uses the state reported by "multipath -l" to
detect an online component disk of a multipath device in order to
resolve its physical slot and enclosure. Changing the command
invocation to "multipath -ll" works around the above issue by causing
multipath to consult additional sources of information to determine
the drive state.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Giuseppe Di Natale <dinatale2@llnl.gov>
Signed-off-by: Ned Bass <bass6@llnl.gov>
Closes #6039

cmd/vdev_id/vdev_id

index 0d617a803ea2930f2fc028e5a1ead0987c7b6738..c7d962045bed3995e90ecb1212d55062fe55bf17 100755 (executable)
@@ -184,9 +184,9 @@ sas_handler() {
                        return
                fi
 
-               # Get the raw scsi device name from multipath -l Strip off
+               # Get the raw scsi device name from multipath -ll. Strip off
                # leading pipe symbols to make field numbering consistent.
-               DEV=`multipath -l $DM_NAME |
+               DEV=`multipath -ll $DM_NAME |
                        awk '/running/{gsub("^[|]"," "); print $3 ; exit}'`
                if [ -z "$DEV" ] ; then
                        return