Hi,

and thanks for the bug reports.

On Wed, Nov 08, 2006 at 05:16:56PM +0100, Loïc Minier wrote:
I'm getting this warning during "update-initramfs -u":
cryptsetup: failed to determine cipher modules to load for 
/dev/mapper/bee--sata-root
...
I only use cryptsetup for crypted partitions on USB keys (LUKS), but I
do have a regular LVM setup for swap, /, and other partitions.

I attach an "update-initramfs -u" run with set -x in the hook.

The failure is caused by add_device() calling get_lvm_deps() which
returns 1.

The misleading comment "is it lvm?" suggests that "get_lvm_deps
"$nodes"" on line 222 is a test for LVM devices.  I think it is a test
on whether $nodes is (are) *backed up* by a LVM device, but I'm not
sure.

It checks whether the "$nodes" device (which is a /dev/mapper/<something> device but not listed in /etc/crypttab) depends on other device-mapper devices (i.e. whether it is a lvm device backed by dm-crypt devices).

It would be nice if you could pass a testsuite for cryptsetup to
prevent regressions.

Yes it would. But since the initramfs hook/script looks at details of the running system, it'd be quite hard to do. I usually try to do a couple of different test runs (esp. using qemu and d-i), but the 2:1.0.4-3 to 2:1.0.4-4 upgrade included pretty big changes to the initramfs scripts to allow for more than one device (to support resume-from-encrypted swap). So unfortunately some bugs crept in...sorry about that.

Would you be willing to test the attached patch? It should solve both bugs you reported today.

--
David Härdeman
Index: initramfs-cryptroot-hook
===================================================================
--- initramfs-cryptroot-hook    (revision 325)
+++ initramfs-cryptroot-hook    (working copy)
@@ -218,10 +218,11 @@
 
        # Can we find this node in crypttab
        if ! node_is_in_crypttab "$nodes"; then
-               # It is a /dev/mapper node but not in crypttab, is it lvm?
-               lvmnodes=$(get_lvm_deps "$nodes") || return 1
+               # It is a /dev/mapper node but not in crypttab,
+               # perhaps it is a crypto-backed lvm device?
+               lvmnodes=$(get_lvm_deps "$nodes") || return 0
 
-               # It is a lvm device!
+               # Yep
                lastopts="lvm=$nodes"
                nodes="$lvmnodes"
        fi
@@ -297,8 +298,7 @@
        modules=$(add_device "$dev")
 
        if [ -z "$modules" ]; then
-               echo "cryptsetup: failed to determine cipher modules to load 
for $dev" >&2
-               exit 1
+               continue
        fi
 
        for mod in $modules; do

Reply via email to