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

Bug#507619: MODULES=most fails w/ cciss devices



Package: initramfs-tools
Version: 0.92l
Severity: important
Tags: patch

A coworker reported a lenny install failure today. Turns out he had
asked the installer to run mkinitramfs w/ MODULES=dep, which I'd never
tried before:

dl380g5:/home/dannf# mkinitramfs-kpkg -o /boot/initrd.img-2.6.26-1-686 2.6.26-1-686
mkinitramfs: missing cciss/c0d0p root /dev/cciss/c0d0p1 /sys entry
mkinitramfs: workaround is MODULES=most
mkinitramfs: Error please report the bug

dep_add_modules() expects to find a /sys/block/cciss/c0d0p file, but
it should be trying /sys/block/cciss!c0d0:

dl380g5:/tmp/initramfs# ls /sys/block/
cciss!c0d0  loop0  loop3  loop6  ram0	ram11  ram14  ram3  ram6  ram9
cciss!c0d1  loop1  loop4  loop7  ram1	ram12  ram15  ram4  ram7  sr0
cciss!c0d2  loop2  loop5  md0	 ram10	ram13  ram2   ram5  ram8

The following patch seems to fix it for me:

--- /usr/share/initramfs-tools/hook-functions.orig	2008-12-02 16:58:05.000000000 -0700
+++ /usr/share/initramfs-tools/hook-functions	2008-12-02 16:58:53.000000000 -0700
@@ -269,6 +269,9 @@
 		root=${root#/dev/}
 		block=$(awk "/^${root}/{print substr(\$5, 1, 3); exit}" \
 			/proc/mdstat)
+	elif [ "${root#/dev/cciss/}" != "${root}" ]; then
+		block=${root#/dev/cciss/*}
+		block="cciss!${block%p*}"
 	# classical root device
 	else
 		block=${root#/dev/}


fyi, I suspect this may also apply to old-style smart array devices,
where device names are similar, but use 'ida' intead of 'cciss' -
e.g. /dev/ida/c0d0p1.



Reply to: