Author: glen
Date: Wed Oct 24 20:20:06 2007
New Revision: 8857

Modified:
   geninitrd/trunk/geninitrd
Log:
- moved dm-multipath handling to function

Modified: geninitrd/trunk/geninitrd
==============================================================================
--- geninitrd/trunk/geninitrd   (original)
+++ geninitrd/trunk/geninitrd   Wed Oct 24 20:20:06 2007
@@ -517,6 +517,42 @@
        return $rc
 }
 
+# find dm-multipath modules for $devpath
+# returns false if $devpath is not dm-multipath
+find_modules_multipath() {
+       local devpath="$1"
+
+       # remove partition, if any
+       local disk=${devpath%p[0-9]*}
+       # need only dm name
+       local id=${disk#/dev/mapper/}
+
+       local info=$(multipath -l $id)
+       if [ -z "$info" ]; then
+               return 1
+       fi
+
+       debug "have multipath"
+       have_multipath=yes
+       local dev phydevs=$(echo "$info" | awk '$2 ~ 
/^[0-9]+:[0-9]+:[0-9]+:[0-9]+$/{printf("/dev/%s\n", $3)}')
+       for dev in $phydevs; do
+               find_modules_for_device $dev
+       done
+
+       local hw hwhandlers=$(echo "$info" | awk 
'/hwhandler=1/{sub(/.*hwhandler=1 /, ""); sub(/\]$/, ""); print}')
+       for hw in $hwhandlers; do
+               findmodule "dm-$hw"
+       done
+
+       local target targets=$(echo "$info" | awk '/prio=/{print $2}' | sort -u)
+       for target in $targets; do
+               findmodule "dm-$target"
+       done
+
+       findmodule "dm-mod"
+       return 0
+}
+
 # find modules for $devpath
 find_modules_for_device() {
        local devpath="$1"
@@ -536,6 +572,7 @@
                if [ ! -x /usr/bin/pcidev -a -z "$NFS_ETH_MODULES" ] ; then
                        die "root on NFS but /usr/bin/pcidev not found. Please 
install correct pci-database package and rerun $PROGRAM."
                fi
+               local m
                [ -z "$NFS_ETH_MODULES" ] && NFS_ETH_MODULES=$(/usr/bin/pcidev 
/m net | xargs)
                for m in $NFS_ETH_MODULES; do
                        findmodule "$m"
@@ -554,33 +591,9 @@
        fi
 
        if [[ "$devpath" == /dev/mapper/* ]] && is_yes "$USE_MULTIPATH"; then
-               # remove partition
-               local disk=${devpath%p[0-9]*}
-               local id=${disk#/dev/mapper/}
-
-               local info=$(multipath -l $id)
-               if [ "$info" ]; then
-                       debug "have multipath"
-                       have_multipath=yes
-                       local dev phydevs=$(echo "$info" | awk '$2 ~ 
/^[0-9]+:[0-9]+:[0-9]+:[0-9]+$/{printf("/dev/%s\n", $3)}')
-                       for dev in $phydevs; do
-                               find_modules_for_device $dev
-                       done
-
-                       local hw hwhandlers=$(echo "$info" | awk 
'/hwhandler=1/{sub(/.*hwhandler=1 /, ""); sub(/\]$/, ""); print}')
-                       for hw in $hwhandlers; do
-                               findmodule "dm-$hw"
-                       done
-
-                       local target targets=$(echo "$info" | awk 
'/prio=/{print $2}' | sort -u)
-                       for target in $targets; do
-                               findmodule "dm-$target"
-                       done
-
-                       findmodule "dm-mod"
+               if find_modules_multipath "$devpath"; then
                        return
                fi
-
                # fallback
        fi
 
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to