mkinitrd unification across distributions
 help / color / mirror / Atom feed
From: Vivek Goyal <vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Cc: initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	harald-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	chaowang-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Subject: Re: [patch v2 1/3] wait host devs in base module
Date: Thu, 23 Aug 2012 11:31:39 -0400	[thread overview]
Message-ID: <20120823153138.GJ12232@redhat.com> (raw)
In-Reply-To: <20120823030627.975913807-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>

On Thu, Aug 23, 2012 at 11:02:22AM +0800, dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org wrote:
> 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
> +}
> +

I am wondering that will it be better to rely on user to pass the
persistent device name instead of we trying to convert it into a name
generated by udev.

I kind of prefer to let user provide the persistent name instead of 
dong tricks internally. (Either in fstab or using --device option).

Thanks
Vivek

> +## 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

  parent reply	other threads:[~2012-08-23 15:31 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 ` [patch v2 1/3] wait host devs in base module dyoung-H+wXaHxf7aLQT0dZR+AlfA
     [not found]   ` <20120823030627.975913807-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-08-23 15:31     ` Vivek Goyal [this message]
     [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=20120823153138.GJ12232@redhat.com \
    --to=vgoyal-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
    --cc=chaowang-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=harald-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=initramfs-u79uwXL29TY76Z2rM5mHXA@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