Comment 8 for bug 164044

Revision history for this message
gw0 (gw-launchpad) wrote :

I think that this fix is not good in all circumstances. The problem lies in the fact that the "waiting loop" for encrypted devices is NOT the same as for unencrypted devices. In case you are using LUKS everything is OK, because there is a container vol_id can detect, but if you are encrypting with preconfigured paramaters then vol_id has nothing to detect (because it can't decrypt and look what is in there).

I haven't tested it, but I recommend to remove the vol_id check from this two lines:
if [ ! -e "$cryptsource" ] || ! /lib/udev/vol_id "$cryptsource" >/dev/null 2>&1; then
while [ ! -e "$cryptsource" ] || ! /lib/udev/vol_id "$cryptsource" >/dev/null 2>&1; do

If it produces problems on slow devices than imho the checks could be replaced by something like:
dd if="$cryptsource" of=/dev/null bs=1 count=1 >/dev/null 2>&1
Or anything more appropriate to test if a device is readable.

P.S.: If you ask me, this patch looks really ugly and needs a rewrite.