SVN: geninitrd/trunk: mod-lvm.sh tests tests/lvmroot.sh

glen glen at pld-linux.org
Tue Nov 17 10:57:02 CET 2009


Author: glen
Date: Tue Nov 17 10:57:01 2009
New Revision: 10978

Added:
   geninitrd/trunk/tests/
   geninitrd/trunk/tests/lvmroot.sh
Modified:
   geninitrd/trunk/mod-lvm.sh
Log:
- process also /dev/mapper/blodnatt-blah--bleh--blah -> /dev/blodnatt/blah-bleh-blah

Modified: geninitrd/trunk/mod-lvm.sh
==============================================================================
--- geninitrd/trunk/mod-lvm.sh	(original)
+++ geninitrd/trunk/mod-lvm.sh	Tue Nov 17 10:57:01 2009
@@ -180,17 +180,22 @@
 			export ROOTVG="$VGVOLUMES"
 			export SUSPENDVG=$SUSPENDVG
 		EOF
+
+		# need awk for "s/--/-/g" subst when parsing kernel root commandline
+		busybox_applet awk
 		add_linuxrc <<-'EOF'
 			# parse rootdev from kernel commandline if it begins with /
 			case "$ROOT" in
 				/*)
 
-				# rewrite /dev/mapper/sys-rootfs -> /dev/sys/rootfs
+				# rewrite:
+			   	# /dev/mapper/sys-rootfs -> /dev/sys/rootfs
+				# /dev/mapper/blodnatt-blah--bleh -> /dev/blodnatt/blah-bleh
 				case "$ROOT" in
 					/dev/mapper/*-*)
 						ROOT=${ROOT#/dev/mapper/}
 						local VG=${ROOT%%-*}
-						local LV=${ROOT#*-}
+						local LV=$(echo "${ROOT#$VG-}" | awk '{gsub(/--/, "-"); print}')
 						ROOT=/dev/$VG/$LV
 					;;
 				esac

Added: geninitrd/trunk/tests/lvmroot.sh
==============================================================================
--- (empty file)
+++ geninitrd/trunk/tests/lvmroot.sh	Tue Nov 17 10:57:01 2009
@@ -0,0 +1,68 @@
+#!/bin/sh
+runtest_run() {
+			# parse rootdev from kernel commandline if it begins with /
+			case "$ROOT" in
+				/*)
+
+				# rewrite:
+			   	# /dev/mapper/sys-rootfs -> /dev/sys/rootfs
+				# /dev/mapper/blodnatt-blah--bleh -> /dev/blodnatt/blah-bleh
+				case "$ROOT" in
+					/dev/mapper/*-*)
+						ROOT=${ROOT#/dev/mapper/}
+						local VG=${ROOT%%-*}
+						local LV=$(echo "${ROOT#$VG-}" | awk '{gsub(/--/, "-"); print}')
+						ROOT=/dev/$VG/$LV
+					;;
+				esac
+
+				if [ "$ROOT" != "$ROOTDEV" ]; then
+					ROOTDEV=$ROOT
+
+					echo "LVM: Using 'root=$ROOTDEV' from kernel commandline"
+					local tmp=${ROOTDEV#/dev/}
+					if [ "$tmp" != "$ROOTDEV" ]; then
+						ROOTVG=${tmp%/*}
+						echo "LVM: Using Volume Group '$ROOTVG' for rootfs"
+					fi
+				fi
+				;;
+			esac
+}
+
+fail=0 ok=0
+fail() {
+	echo "FAIL: $@"
+	fail=$((fail+1))
+	return 1
+}
+ok() {
+	echo "OK: $@"
+	ok=$((ok+1))
+	return 0
+}
+runtest() {
+	local exp=$(mktemp) out=$(mktemp)
+	cat > $exp
+	eval $@
+	runtest_run > $out
+	diff -u $out $exp || fail "$@" && ok "$@\n$(cat $exp)"
+	rm -f $exp $out
+}
+
+runtest ROOT=/dev/mapper/sys-rootfs OK=/dev/sys/rootfs <<'EOF'
+LVM: Using 'root=/dev/sys/rootfs' from kernel commandline
+LVM: Using Volume Group 'sys' for rootfs
+EOF
+
+runtest ROOT=/dev/mapper/blodnatt-blah--bleh OK=/dev/blodnatt/blah-bleh <<'EOF'
+LVM: Using 'root=/dev/blodnatt/blah-bleh' from kernel commandline
+LVM: Using Volume Group 'blodnatt' for rootfs
+EOF
+
+runtest ROOT=/dev/mapper/blodnatt-blah--bleh--blah OK=/dev/blodnatt/blah-bleh-blah <<'EOF'
+LVM: Using 'root=/dev/blodnatt/blah-bleh-blah' from kernel commandline
+LVM: Using Volume Group 'blodnatt' for rootfs
+EOF
+
+echo "OK: $ok; FAIL: $fail"


More information about the pld-cvs-commit mailing list