base/dracut-lib.sh:wait_for_dev()/cancel_wait_for_dev() set systemd timeouts

Set systemd unit timeouts for the devices we wait for. The systemd
default is 90 seconds, which is way too low for complicated setups.
master
Harald Hoyer 2013-04-04 12:56:42 +02:00
parent ab9b04f55b
commit 6db8c5a5fe
3 changed files with 21 additions and 28 deletions

View File

@ -849,6 +849,13 @@ wait_for_dev()
[ -d ${PREFIX}/etc/systemd/system/initrd.target.requires ] || mkdir -p ${PREFIX}/etc/systemd/system/initrd.target.requires [ -d ${PREFIX}/etc/systemd/system/initrd.target.requires ] || mkdir -p ${PREFIX}/etc/systemd/system/initrd.target.requires
ln -s ../${_name}.device ${PREFIX}/etc/systemd/system/initrd.target.requires/${_name}.device ln -s ../${_name}.device ${PREFIX}/etc/systemd/system/initrd.target.requires/${_name}.device
fi fi

mkdir -p ${PREFIX}/etc/systemd/system/${_name}.device.d
{
echo "[Unit]"
echo "JobTimeoutSec=3600"
} > ${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf
[ -z "$PREFIX" ] && /sbin/initqueue --onetime --unique --name daemon-reload systemctl daemon-reload
fi fi
} }


@ -858,6 +865,12 @@ cancel_wait_for_dev()
_name="$(str_replace "$1" '/' '\\x2f')" _name="$(str_replace "$1" '/' '\\x2f')"
rm -f "$hookdir/initqueue/finished/devexists-${_name}.sh" rm -f "$hookdir/initqueue/finished/devexists-${_name}.sh"
rm -f "$hookdir/emergency/80-${_name}.sh" rm -f "$hookdir/emergency/80-${_name}.sh"
if [ -n "$DRACUT_SYSTEMD" ]; then
_name=$(dev_unit_name "$1")
rm -f ${PREFIX}/etc/systemd/system/initrd.target.requires/${_name}.device
rm -f ${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf
/sbin/initqueue --onetime --unique --name daemon-reload systemctl daemon-reload
fi
} }


killproc() { killproc() {
@ -1023,7 +1036,7 @@ listlist() {


# returns OK if both lists contain the same values. An order and a duplication # returns OK if both lists contain the same values. An order and a duplication
# doesn't matter. # doesn't matter.
# #
# $1 = separator # $1 = separator
# $2 = list1 # $2 = list1
# $3 = list2 # $3 = list2

View File

@ -89,18 +89,18 @@ install() {


## save host_devs which we need bring up ## save host_devs which we need bring up
( (
if dracut_module_included "systemd"; then
DRACUT_SYSTEMD=1
fi
PREFIX="$initdir"

. "$moddir/dracut-lib.sh" . "$moddir/dracut-lib.sh"

for _dev in ${host_devs[@]}; do for _dev in ${host_devs[@]}; do
_pdev=$(get_persistent_dev $_dev) _pdev=$(get_persistent_dev $_dev)


case "$_pdev" in case "$_pdev" in
/dev/?*) /dev/?*) wait_for_dev $_pdev;;
if ! dracut_module_included "systemd"; then
PREFIX="$initdir" wait_for_dev $_pdev
else
DRACUT_SYSTEMD=1 PREFIX="$initdir" wait_for_dev $_pdev
fi
;;
*) ;; *) ;;
esac esac
done done

View File

@ -1,20 +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

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