summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVivek Goyal <vgoyal@redhat.com>2012-05-15 13:36:11 -0400
committerHarald Hoyer <harald@redhat.com>2012-05-16 11:44:21 +0200
commit8be5a0fa945d130ef8ebb464ebbe1a865949353d (patch)
tree3a39b2ba210dfe50f6ecc1ed7377f3c152e5e822
parentbd4be59fb2574b8cbcdf22a86a6cafb7b71db503 (diff)
downloaddracut-8be5a0fa945d130ef8ebb464ebbe1a865949353d.tar.gz
dracut-8be5a0fa945d130ef8ebb464ebbe1a865949353d.tar.bz2
dracut-8be5a0fa945d130ef8ebb464ebbe1a865949353d.zip
dracut:fstab-sys: Wait for devices specified using --mount option
dracut allows passing --mount option which mounts the specified devices. But it does not wait for these devices to show up and mounting will fail if devices do not show up by the time "mount" was called. I am writing some patches to support kdump on iscsi target and I noticed that one of the initqueue script was not called as we found the root device and broke out of main loop. There are two possible enancements to this patch. - Introduce a time limited wait (rd.timeout something along the lines of rd.retry). That will allow kdump to try to dump to a backup target if primary targets fails to come up. - Wait for UUID= and LABEL= to show up too. Right now kdump converts UUID= and LABEL= to respective devices and passes /dev/* to dracut --mount option. So I am not introducing the wait for UUID= or LABEL= in this patch. Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
-rwxr-xr-xmodules.d/95fstab-sys/module-setup.sh1
-rw-r--r--modules.d/95fstab-sys/wait-mount-dev.sh22
2 files changed, 23 insertions, 0 deletions
diff --git a/modules.d/95fstab-sys/module-setup.sh b/modules.d/95fstab-sys/module-setup.sh
index 7589d743..56dd8fcd 100755
--- a/modules.d/95fstab-sys/module-setup.sh
+++ b/modules.d/95fstab-sys/module-setup.sh
@@ -13,4 +13,5 @@ depends() {
install() {
[ -f /etc/fstab.sys ] && inst /etc/fstab.sys
inst_hook pre-pivot 00 "$moddir/mount-sys.sh"
+ inst_hook cmdline 00 "$moddir/wait-mount-dev.sh"
}
diff --git a/modules.d/95fstab-sys/wait-mount-dev.sh b/modules.d/95fstab-sys/wait-mount-dev.sh
new file mode 100644
index 00000000..99fc16c8
--- /dev/null
+++ b/modules.d/95fstab-sys/wait-mount-dev.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+
+type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+type det_fs >/dev/null 2>&1 || . /lib/fs-lib.sh
+
+fstab_wait_dev() {
+ local _dev _mp _fs _opts _dump _pass _rest
+ test -e "$1" || return 1
+ while read _dev _mp _fs _opts _dump _pass _rest; do
+ [ -z "${_dev%%#*}" ] && continue # Skip comment lines
+ case "$_dev" in
+ /dev/?*)
+ wait_for_dev $_dev;;
+ *) ;;
+ esac
+ done < $1
+ return 0
+}
+
+[ -f /etc/fstab ] && fstab_wait_dev /etc/fstab