diff options
Diffstat (limited to 'sys-boot/os-prober/files/os-prober-skip-part-on-multipath.patch')
-rw-r--r-- | sys-boot/os-prober/files/os-prober-skip-part-on-multipath.patch | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/sys-boot/os-prober/files/os-prober-skip-part-on-multipath.patch b/sys-boot/os-prober/files/os-prober-skip-part-on-multipath.patch new file mode 100644 index 00000000..c813750a --- /dev/null +++ b/sys-boot/os-prober/files/os-prober-skip-part-on-multipath.patch @@ -0,0 +1,42 @@ +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" |