SVN: geninitrd/trunk/geninitrd

glen glen at pld-linux.org
Wed Oct 24 20:45:34 CEST 2007


Author: glen
Date: Wed Oct 24 20:45:34 2007
New Revision: 8859

Modified:
   geninitrd/trunk/geninitrd
Log:
- typo (multipath part was always generated)
- find_modules_dmraid() moved to function
- $have_dmraid variable to denote dmraid status

Modified: geninitrd/trunk/geninitrd
==============================================================================
--- geninitrd/trunk/geninitrd	(original)
+++ geninitrd/trunk/geninitrd	Wed Oct 24 20:45:34 2007
@@ -59,12 +59,15 @@
 proc_partitions=no
 # dmraid component devices of rootfs is on dmraid
 dmraid_devices=''
+
 # if we should init NFS at boot
 have_nfs=no
 # if we should init LVM at boot
 have_lvm=no
 # if we should init md (softraid) at boot
 have_md=no
+# if we should init dmraid at boot
+have_dmraid=no
 # if we should init dm-multipath at boot
 have_multipath=no
 
@@ -553,6 +556,34 @@
 	return 0
 }
 
+# find dmraid modules for $devpath
+# returns false if $devpath is not on dmraid
+find_modules_dmraid() {
+	local devpath="$1"
+
+	# get blockdev itself (without partition)
+	# /dev/mapper/sil_ahbgadcbchfc3 -> /dev/mapper/sil_ahbgadcbchfc
+	local blockdev=${devpath%%[0-9]*}
+	local raidname=${blockdev#/dev/mapper/}
+	local found=0
+
+	local dev phydevs=$(dmraid -r -cdevpath,raidname | awk -F, -vv="$raidname" '{if ($2 == v) print $1}')
+	for dev in $phydevs; do
+		find_modules_for_device $dev
+		dmraid_devices="$dmraid_devices $dev"
+		found=1
+	done
+
+	if [ $found = 0 ]; then
+		return 1
+	fi
+
+	# XXX probably should detect
+	findmodule "dm-mirror"
+	have_dmraid=yes
+	return 0
+}
+
 # find modules for $devpath
 find_modules_for_device() {
 	local devpath="$1"
@@ -597,6 +628,13 @@
 		# fallback
 	fi
 
+	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
+		if find_modules_dmraid "$devpath"; then
+			return
+		fi
+		# fallback
+	fi
+
 	if is_yes "$(echo "$devpath" | awk '/^\/dev\/(sd|scsi)/ { print "yes"; }')" ; then
 		find_modules_scsi
 		return
@@ -607,26 +645,6 @@
 		return
 	fi
 
-	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
-		# XXX dmraid could say to us that /dev/dm-3 consists from /dev/sda, /dev/sdb
-
-		local node
-		# get blockdev itself (without partition)
-		# /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
-		findmodule "dm-mirror"
-		return
-	fi
-
 	if is_yes "`echo "$devpath" | awk '/\/dev\/rd\// { print "yes"; }'`" ; then
 		findmodule "DAC960"
 		return
@@ -1506,7 +1524,7 @@
 		if is_yes "$have_md"; then
 			echo "	md_component_detection = 1" >> "$MNTIMAGE/etc/lvm.conf"
 		fi
-		if [ "$dmraid_devices" ] || is_yes "$have_multipath"; then
+		if is_yes "$have_dmraid" || is_yes "$have_multipath"; then
 			echo '	types = [ "device-mapper", 254 ]' >> "$MNTIMAGE/etc/lvm.conf"
 		fi
 		if [ "$dmraid_devices" ]; then
@@ -1583,11 +1601,11 @@
 	initrd_gen_tuxonice
 fi
 
-if [ "$dmraid_devices" ]; then
+if is_yes "$have_dmraid" ]; then
 	initrd_gen_dmraid
 fi
 
-if [ "$have_multipath" ]; then
+if is_yes "$have_multipath"; then
 	initrd_gen_multipath
 fi
 


More information about the pld-cvs-commit mailing list