[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

unblock initramfs-tools 0.92i



hello,

default d-i MODULES=dep on arm/armel uncovered a mkinitramfs
trouble for lvm on md. rwhitby boot tested belows fix.

please dannf review belows diff. If md turns up as slave
from a dm it lacked a check for it's physical device, so
that the corresponding device driver lands on initramfs
(as bonus fixed confusing comments in the code region).
reuse of almost same awk snippet for md root 2 lines below.

on ack this should land in Lenny.


kind regards
maks

diff --git a/debian/changelog b/debian/changelog
index 60f4cc4..036a27b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+initramfs-tools (0.92i) unstable; urgency=high
+
+  * MODULES=dep fix for root lvm on md. (closes: #498237)
+    Thanks Rod Whitby <rod@whitby.id.au> for report and test.
+
+ -- maximilian attems <maks@debian.org>  Mon, 08 Sep 2008 16:13:24 +0200
+
 initramfs-tools (0.92g) unstable; urgency=high
 
   [ maximilian attems ]
diff --git a/hook-functions b/hook-functions
index 8bbbbd4..6a5aebf 100644
--- a/hook-functions
+++ b/hook-functions
@@ -245,13 +245,19 @@ dep_add_modules()
 	# Add rootfs
 	manual_add_modules "${FSTYPE}"
 
-	# lvm luks root
+	# lvm or luks root
 	if [ "${root#/dev/mapper/}" != "${root}" ]; then
 		minor=$((0x$(stat --format "%T" ${root}) % 256))
 		block=$(ls -1 /sys/block/dm-${minor}/slaves | head -n 1)
+		# lvm on luks or luks on lvm
 		if [ "${block#dm-}" != "${block}" ]; then
 			block=$(ls -1 /sys/block/${block}/slaves | head -n 1)
 		fi
+		# lvm on md or luks on md
+		if [ "${block#md}" != "${block}" ]; then
+			block=$(awk "/^${block}/{print substr(\$5, 1, 4); exit}" \
+				/proc/mdstat)
+		fi
 		block=${block%[0-9]*}
 	# md root new naming scheme /dev/md/X
 	elif [ "${root#/dev/md/}" != "${root}" ]; then


Reply to: