From: dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
To: initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
harald-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
chaowang-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Cc: Dave Young <dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: [patch v2 1/3] wait host devs in base module
Date: Thu, 23 Aug 2012 11:02:22 +0800 [thread overview]
Message-ID: <20120823030627.975913807@redhat.com> (raw)
In-Reply-To: 20120823030221.587864989@redhat.com
[-- Attachment #1: 0816-1-wait-host-devs.patch --]
[-- Type: text/plain, Size: 3451 bytes --]
each dev in host_devs[] should be waited in initqueue to make sure they
are oneline before initqueue finish.
Add a new wait_host_devs.sh in base module to make this a generic thing.
Because all the devs in fstab lines are also added to host_devs, so no need
do same wait in fstab-sys module anymore.
[v2->v3]: do not add slave devices to host_devs
wait for persistent dev name in initramfs
Signed-off-by: Dave Young <dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
---
dracut.sh | 16 ++++++++++++++++
modules.d/95fstab-sys/module-setup.sh | 1 -
modules.d/95fstab-sys/wait-mount-dev.sh | 22 ----------------------
modules.d/99base/module-setup.sh | 1 +
modules.d/99base/wait-host-devs.sh | 20 ++++++++++++++++++++
5 files changed, 37 insertions(+), 23 deletions(-)
--- dracut.orig/dracut.sh
+++ dracut/dracut.sh
@@ -903,6 +903,22 @@ done
dinfo "*** Including modules done ***"
+get_persistent_dev() {
+ local i _tmp
+ local _dev=${1##*/}
+
+ for i in /dev/disk/by-id/*; do
+ _tmp=$(readlink $i)
+ [ "${_tmp##*/}" = "$_dev" ] && echo $i && return
+ done
+}
+
+## save host_devs which we need bring up
+for _dev in ${host_devs[@]}; do
+ _pdev=$(get_persistent_dev $_dev)
+ [ -n "$_pdev" ] && echo $_pdev >> $initdir/etc/host_devs
+done
+
## final stuff that has to happen
if [[ $no_kernel != yes ]]; then
--- dracut.orig/modules.d/95fstab-sys/module-setup.sh
+++ dracut/modules.d/95fstab-sys/module-setup.sh
@@ -13,5 +13,4 @@ depends() {
install() {
[ -f /etc/fstab.sys ] && inst_simple /etc/fstab.sys
inst_hook pre-pivot 00 "$moddir/mount-sys.sh"
- inst_hook cmdline 00 "$moddir/wait-mount-dev.sh"
}
--- dracut.orig/modules.d/95fstab-sys/wait-mount-dev.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/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
--- dracut.orig/modules.d/99base/module-setup.sh
+++ dracut/modules.d/99base/module-setup.sh
@@ -41,6 +41,7 @@ install() {
dracut_install switch_root || dfatal "Failed to install switch_root"
inst_simple "$moddir/dracut-lib.sh" "/lib/dracut-lib.sh"
+ inst_hook cmdline 00 "$moddir/wait-host-devs.sh"
inst_hook cmdline 10 "$moddir/parse-root-opts.sh"
mkdir -p "${initdir}/var"
[ -x /lib/systemd/systemd-timestamp ] && inst /lib/systemd/systemd-timestamp
--- /dev/null
+++ dracut/modules.d/99base/wait-host-devs.sh
@@ -0,0 +1,20 @@
+#!/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
+
+wait_host_devs() {
+ local _dev
+
+ while read _dev; do
+ case "$_dev" in
+ /dev/?*)
+ wait_for_dev $_dev
+ ;;
+ *) ;;
+ esac
+ done < $1
+}
+
+[ -f /etc/host_devs ] && wait_host_devs /etc/host_devs
next prev parent reply other threads:[~2012-08-23 3:02 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-23 3:02 [patch v2 0/3] add --device option dyoung-H+wXaHxf7aLQT0dZR+AlfA
2012-08-23 3:02 ` dyoung-H+wXaHxf7aLQT0dZR+AlfA [this message]
[not found] ` <20120823030627.975913807-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-08-23 15:31 ` [patch v2 1/3] wait host devs in base module Vivek Goyal
[not found] ` <20120823153138.GJ12232-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-08-27 6:35 ` Dave Young
[not found] ` <503B1530.6060208-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-08-27 14:58 ` Vivek Goyal
2012-08-23 3:02 ` [patch v2 2/3] Add for_each_host_dev_and_slaves for device only checking dyoung-H+wXaHxf7aLQT0dZR+AlfA
[not found] ` <20120823030628.133563734-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-08-23 15:26 ` Vivek Goyal
[not found] ` <20120823152631.GI12232-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-08-27 6:57 ` Dave Young
[not found] ` <503B1A62.4010905-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-08-27 8:00 ` Dave Young
[not found] ` <503B292A.70707-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-08-27 15:03 ` Vivek Goyal
2012-08-23 3:02 ` [patch v2 3/3] Add a dracut option --device to bring up a device in initramfs dyoung-H+wXaHxf7aLQT0dZR+AlfA
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120823030627.975913807@redhat.com \
--to=dyoung-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=chaowang-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=harald-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox