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
parent
ab9b04f55b
commit
6db8c5a5fe
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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…
Reference in New Issue