From 5c6a593f2edfdb25ce08df786402b24ab143f07b Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Mon, 31 Aug 2009 11:41:36 +0200 Subject: [PATCH] add udevsettle function and settle after raid/lvm/crypto activities --- modules.d/50plymouth/cryptroot-ask.sh | 3 +++ modules.d/90crypt/cryptroot-ask.sh | 5 ++++- modules.d/90dmraid/dmraid.sh | 2 ++ modules.d/90lvm/lvm_scan.sh | 3 ++- modules.d/99base/dracut-lib.sh | 8 ++++++++ modules.d/99base/init | 6 +----- 6 files changed, 20 insertions(+), 7 deletions(-) diff --git a/modules.d/50plymouth/cryptroot-ask.sh b/modules.d/50plymouth/cryptroot-ask.sh index 9dbb44f..2188088 100755 --- a/modules.d/50plymouth/cryptroot-ask.sh +++ b/modules.d/50plymouth/cryptroot-ask.sh @@ -24,6 +24,7 @@ if [ -n "$LUKS" ]; then fi if [ $ask -gt 0 ]; then + info "luksOpen $1 $2" # flock against other interactive activities { flock -s 9; /bin/plymouth ask-for-password \ @@ -35,6 +36,8 @@ fi # mark device as asked >> /tmp/cryptroot-asked-$2 +udevsettle + unset LUKS unset ask unset luks diff --git a/modules.d/90crypt/cryptroot-ask.sh b/modules.d/90crypt/cryptroot-ask.sh index 9d23808..a2ebde6 100755 --- a/modules.d/90crypt/cryptroot-ask.sh +++ b/modules.d/90crypt/cryptroot-ask.sh @@ -24,14 +24,17 @@ if [ -n "$LUKS" ]; then fi if [ $ask -gt 0 ]; then + info "luksOpen $1 $2" # flock against other interactive activities { flock -s 9; echo -n "$1 is password protected " - /sbin/cryptsetup luksOpen -T1 $1 $2 + /sbin/cryptsetup luksOpen -T1 $1 $2 } 9>/.console.lock fi # mark device as asked >> /tmp/cryptroot-asked-$2 +udevsettle + exit 0 diff --git a/modules.d/90dmraid/dmraid.sh b/modules.d/90dmraid/dmraid.sh index 74ea70f..2cd6773 100755 --- a/modules.d/90dmraid/dmraid.sh +++ b/modules.d/90dmraid/dmraid.sh @@ -15,12 +15,14 @@ if $UDEV_QUEUE_EMPTY >/dev/null 2>&1; then if [ "${s##$r}" != "$s" ]; then info "Activating $s" dmraid -ay $s 2>&1 | vinfo + udevsettle fi done done else # scan and activate all DM RAIDS dmraid -ay 2>&1 | vinfo + udevsettle fi fi diff --git a/modules.d/90lvm/lvm_scan.sh b/modules.d/90lvm/lvm_scan.sh index 966f909..a40b677 100755 --- a/modules.d/90lvm/lvm_scan.sh +++ b/modules.d/90lvm/lvm_scan.sh @@ -23,7 +23,7 @@ if $UDEV_QUEUE_EMPTY >/dev/null 2>&1; then printf '"a|^/dev/%s$|", ' $dev; done; echo '"r/.*/" ]'; - echo 'types = [ "blkext", 1024 ]' + echo 'types = [ "blkext", 1024 , "cciss0", 1024 ]' echo '}'; } > /etc/lvm/lvm.conf lvmwritten=1 @@ -33,5 +33,6 @@ if $UDEV_QUEUE_EMPTY >/dev/null 2>&1; then lvm vgchange -ay $VGS 2>&1 | vinfo [ "$lvmwritten" ] && rm -f /etc/lvm/lvm.conf unset lvmwritten + udevsettle fi diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh index 3c6cf86..76cb127 100644 --- a/modules.d/99base/dracut-lib.sh +++ b/modules.d/99base/dracut-lib.sh @@ -107,3 +107,11 @@ incol2() { done < $file return 1 } + +udevsettle() { + if [ $UDEVVERSION -ge 143 ]; then + udevadm settle --exit-if-exists=/initqueue/work --exit-if-exists=/dev/root + else + udevadm settle --timeout=30 + fi +} diff --git a/modules.d/99base/init b/modules.d/99base/init index 19c7f38..d94a3a2 100755 --- a/modules.d/99base/init +++ b/modules.d/99base/init @@ -112,11 +112,7 @@ while :; do # check if root can be mounted [ -e /dev/root ] && break; - if [ $UDEVVERSION -ge 143 ]; then - udevadm settle --exit-if-exists=/initqueue/work --exit-if-exists=/dev/root - else - udevadm settle --timeout=30 - fi + udevsettle # bail out, if we have mounted the root filesystem [ -d "$NEWROOT/proc" ] && break; -- 2.7.4