Browse Source

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 12 years ago
parent
commit
6db8c5a5fe
  1. 15
      modules.d/99base/dracut-lib.sh
  2. 14
      modules.d/99base/module-setup.sh
  3. 20
      modules.d/99base/wait-host-devs.sh

15
modules.d/99base/dracut-lib.sh

@ -849,6 +849,13 @@ wait_for_dev() @@ -849,6 +849,13 @@ wait_for_dev()
[ -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
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
}

@ -858,6 +865,12 @@ cancel_wait_for_dev() @@ -858,6 +865,12 @@ cancel_wait_for_dev()
_name="$(str_replace "$1" '/' '\\x2f')"
rm -f "$hookdir/initqueue/finished/devexists-${_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() {
@ -1023,7 +1036,7 @@ listlist() { @@ -1023,7 +1036,7 @@ listlist() {

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

14
modules.d/99base/module-setup.sh

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

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

. "$moddir/dracut-lib.sh"

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

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

20
modules.d/99base/wait-host-devs.sh

@ -1,20 +0,0 @@ @@ -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
Loading…
Cancel
Save