Author: glen
Date: Wed Oct 24 20:31:22 2007
New Revision: 8858

Modified:
   geninitrd/trunk/geninitrd
Log:
- optimize little dmraid part

Modified: geninitrd/trunk/geninitrd
==============================================================================
--- geninitrd/trunk/geninitrd   (original)
+++ geninitrd/trunk/geninitrd   Wed Oct 24 20:31:22 2007
@@ -590,7 +590,7 @@
                return
        fi
 
-       if [[ "$devpath" == /dev/mapper/* ]] && is_yes "$USE_MULTIPATH"; then
+       if is_yes "$USE_MULTIPATH" && [[ "$devpath" == /dev/mapper/* ]]; then
                if find_modules_multipath "$devpath"; then
                        return
                fi
@@ -607,21 +607,19 @@
                return
        fi
 
-       if is_yes "$(echo "$devpath" | awk 
'/^\/dev\/mapper\/(sil|hpt37x|hpt45x|isw|lsi|nvidia|pdc|sil|via|dos)_/ { print 
"yes"; }')"; then
+       if is_yes "$USE_DMRAID" && is_yes "$(echo "$devpath" | awk 
'/^\/dev\/mapper\/(sil|hpt37x|hpt45x|isw|lsi|nvidia|pdc|sil|via|dos)_/ { print 
"yes"; }')"; then
                # dmraid nodes taken from: `dmraid -l` output
-               if [ ! -x /usr/sbin/dmraid ]; then
-                       die "root on dmraid but /usr/sbin/dmraid not found."
-               fi
-
                # XXX dmraid could say to us that /dev/dm-3 consists from 
/dev/sda, /dev/sdb
 
+               local node
                # get blockdev itself (without partition)
-               local node blockdev
-               blockdev=${devpath%%[0-9]*}
-               blockdev=${blockdev#/dev/mapper/}
-               for node in $(dmraid -r -cdevpath,raidname |awk -F, 
-vv="$blockdev" '{if ($2 == v) print $1}'); do
-                       find_modules_for_device $node
-                       dmraid_devices="$dmraid_devices $node"
+               # /dev/mapper/sil_ahbgadcbchfc3 -> /dev/mapper/sil_ahbgadcbchfc
+               local blockdev=${devpath%%[0-9]*}
+               local raidname=${blockdev#/dev/mapper/}
+               local dev phydevs=$(dmraid -r -cdevpath,raidname | awk -F, 
-vv="$raidname" '{if ($2 == v) print $1}'); do
+               for dev in $phydevs; do
+                       find_modules_for_device $dev
+                       dmraid_devices="$dmraid_devices $dev"
                done
 
                # XXX probably should detect
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to