diff -ruN cryptsetup-1.0.6/debian/initramfs/cryptroot-hook cryptsetup-1.0.6.new/debian/initramfs/cryptroot-hook
--- cryptsetup-1.0.6/debian/initramfs/cryptroot-hook	2010-05-11 12:35:35.000000000 -0500
+++ cryptsetup-1.0.6.new/debian/initramfs/cryptroot-hook	2010-05-11 17:57:04.000000000 -0500
@@ -120,7 +120,7 @@
 }
 
 get_lvm_deps() {
-	local node deps maj min depnode
+	local node deps maj min depnode names blockdevs vgnames pvnames
 	node="$1"
 
 	if [ -z $node ]; then
@@ -134,6 +134,43 @@
 	fi
 
 	# We should now have a list of major,minor pairs, e.g. "3,2 3,3"
+
+  # A VG cannot be started without all corresponding PVs. We need to check and
+  # see if any PVs in the VG that are not used by the root LV are encrypted as
+  # well.
+
+  # Need a list of all block devices formatted: maj,min:/dev/whatever
+  blockdevs="$(find /dev -type b -exec ls -ld '{}' \; | cut -d' ' -f5,6,9 | sed -e 's/, /,/;s/ /:/;')"
+
+  # Find all /dev entries corresponding to the major,minor pairs we have for
+  # possible alternate names that pvdisplay may be using to refer to the device
+
+
+  for dep in $deps; do
+    names="$(printf "$names\n%s" "$(echo "$blockdevs" | egrep "^$dep:" | sed -e "s/^$dep://")")"
+  done
+
+  names="$(echo "$names" | sed -e '/^$/d')"
+  for name in $names; do
+    vgnames="$(printf "$vgnames\n%s" "$(pvdisplay -c | grep '^  '"$name" | cut -d: -f2)")"
+  done
+
+  vgnames="$(echo "$vgnames" | sed -e '/^$/d' | sort | uniq)"
+
+  for vgname in $vgnames; do
+    pvnames="$(printf "$pvnames\n%s" "$(pvdisplay -c | egrep -o "^[^:]+:$vgname:" | cut -d: -f1 | sed -e 's/^  //')")"
+  done
+  pvnames="$(echo "$pvnames" | sed -e '/^$/d')"
+
+  for pvname in $pvnames; do
+    dep="$(echo "$blockdevs" | grep ":$pvname\$" | cut -d: -f1)"
+    echo "$deps" | egrep '(^| )'"$dep"'( |$)' >/dev/null
+    if [ ! "$?" -eq '0' ]; then
+      deps="$deps $dep"
+    fi
+  done
+
+
 	for dep in $deps; do
 		maj=${dep%,*}
 		min=${dep#*,}
