From: Harald Hoyer Date: Mon, 31 Aug 2009 09:41:36 +0000 (+0200) Subject: add udevsettle function and settle after raid/lvm/crypto activities X-Git-Tag: 001~19 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5c6a593f2edfdb25ce08df786402b24ab143f07b;p=thirdparty%2Fdracut.git add udevsettle function and settle after raid/lvm/crypto activities --- diff --git a/modules.d/50plymouth/cryptroot-ask.sh b/modules.d/50plymouth/cryptroot-ask.sh index 9dbb44fb4..218808897 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 9d238088d..a2ebde6c9 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 74ea70f00..2cd67737b 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 966f9094e..a40b6774d 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 3c6cf86fe..76cb127ae 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 19c7f38f0..d94a3a27a 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;