Blame 0016-luks-key-on-ext-dev-wait-for-luks.patch

Harald Hoyer 55891e
From 2e0c003435bbc0751cdf7466c0faebe7bfc7445b Mon Sep 17 00:00:00 2001
Harald Hoyer 55891e
From: =?UTF-8?q?Przemys=C5=82aw=20Rudy?= <prudy1@o2.pl>
Harald Hoyer 55891e
Date: Mon, 22 Aug 2011 11:27:00 +0200
Harald Hoyer 55891e
Subject: [PATCH] luks key on ext dev - wait for luks
Harald Hoyer 55891e
Harald Hoyer 55891e
This really waits for the luks mapper device, so luksOpen can do it job
Harald Hoyer 55891e
---
Harald Hoyer 55891e
 modules.d/90crypt/parse-crypt.sh |   18 ++++++++++++++++--
Harald Hoyer 55891e
 1 files changed, 16 insertions(+), 2 deletions(-)
Harald Hoyer 55891e
Harald Hoyer 55891e
diff --git a/modules.d/90crypt/parse-crypt.sh b/modules.d/90crypt/parse-crypt.sh
Harald Hoyer 55891e
index ff86700..1e78aa9 100755
Harald Hoyer 55891e
--- a/modules.d/90crypt/parse-crypt.sh
Harald Hoyer 55891e
+++ b/modules.d/90crypt/parse-crypt.sh
Harald Hoyer 55891e
@@ -24,8 +24,22 @@ else
Harald Hoyer 55891e
                 printf -- '$env{DEVNAME} luks-$env{ID_FS_UUID} %s"\n' $tout
Harald Hoyer 55891e
             } >> /etc/udev/rules.d/70-luks.rules.new
Harald Hoyer 55891e
 
Harald Hoyer 55891e
-            printf -- '[ -e /dev/disk/by-uuid/*%s* ]\n' $luksid \
Harald Hoyer 55891e
-                >> $hookdir/initqueue/finished/90-crypt.sh
Harald Hoyer 55891e
+
Harald Hoyer 55891e
+            [ -e $hookdir/initqueue/finished/90-crypt.sh ] || \
Harald Hoyer 55891e
+            {
Harald Hoyer 55891e
+                printf -- 'UUIDS=:\n'
Harald Hoyer 55891e
+                printf -- 'for dm in /dev/dm-*; do\n'
Harald Hoyer 55891e
+                printf -- '[ -e "$dm" ] || exit 1\n'
Harald Hoyer 55891e
+                printf -- 'dmid=`/sbin/dmsetup info -c -o uuid --noheadings "$dm"`\n'
Harald Hoyer 55891e
+                printf -- 'uuid=${dmid#CRYPT-LUKS*-}\n'
Harald Hoyer 55891e
+                printf -- '[ "x$uuid" = "x$dmid" ] && continue\n'
Harald Hoyer 55891e
+                printf -- 'UUIDS="${UUIDS}${uuid%%%%-*}:"\n'
Harald Hoyer 55891e
+                printf -- 'done\n'
Harald Hoyer 55891e
+            } > $hookdir/initqueue/finished/90-crypt.sh
Harald Hoyer 55891e
+            uuid=$luksid
Harald Hoyer 55891e
+            while [ "$uuid" != "${uuid#*-}" ]; do uuid=${uuid%%-*}${uuid#*-}; done
Harald Hoyer 55891e
+            printf -- '[ "x${UUIDS#*:%s:}" != "x$UUIDS" ] || exit 1\n' $uuid >> $hookdir/initqueue/finished/90-crypt.sh
Harald Hoyer 55891e
+
Harald Hoyer 55891e
             {
Harald Hoyer 55891e
                 printf -- '[ -e /dev/disk/by-uuid/*%s* ] || ' $luksid
Harald Hoyer 55891e
                 printf -- 'warn "crypto LUKS UUID "%s" not found"\n' $luksid