Index: os-prober-1.61/os-prober =================================================================== --- os-prober-1.61.orig/os-prober +++ os-prober-1.61/os-prober @@ -23,6 +23,28 @@ fi return 1 } +mp_disks="UNDEF" +on_multipath () { + type multipath >/dev/null 2>&1 || return 1 + local parent="${1%/*}" + local device="${parent##*/}" + + if [ "$mp_disks" = "UNDEF" ]; then + mp_disks=`multipath -d -l | sed -n -e 's/^.\+[0-9]\+:[0-9]\+:[0-9]\+:[0-9]\+ \([^ ]\+\) .*/\1/p'` + fi + + if [ -z "$mp_disks" ]; then + return 1 + fi + + for i in $mp_disks; do + if [ "$device" = "$i" ]; then + debug "$1: part of multipath disk $i" + return 0 + fi + done + return 1 +} partitions () { os_name="$(uname -s)" @@ -31,7 +54,7 @@ partitions () { # Serial ATA RAID disk. for part in /sys/block/*/*[0-9]; do if [ -f "$part/start" ] && \ - [ ! -f "$part/whole_disk" ] && ! on_sataraid $part; then + [ ! -f "$part/whole_disk" ] && ! on_sataraid $part && ! on_multipath $part; then name="$(echo "${part##*/}" | sed 's,[!.],/,g')" if [ -e "/dev/$name" ]; then echo "/dev/$name"