Browse Source

Implement 'rd.timeout' to modify the device timeout

When generating units for devices the administrator might
want to use a different timeout than the default.
So implement a new parameter 'rd.timeout' for this.

References: bnc#878770

Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Thomas Renninger <trenn@suse.de>
master
Hannes Reinecke 10 years ago committed by Harald Hoyer
parent
commit
56663e7e32
  1. 7
      dracut.cmdline.7.asc
  2. 7
      modules.d/98systemd/rootfs-generator.sh
  3. 6
      modules.d/99base/dracut-lib.sh

7
dracut.cmdline.7.asc

@ -142,11 +142,16 @@ Misc @@ -142,11 +142,16 @@ Misc
have been loaded. This parameter can be specified multiple times.

**rd.retry=**__<seconds>__::
specify how long dracut should wait for devices to appear.
specify how long dracut should retry the initqueue to configure devices.
The default is 30 seconds. After 2/3 of the time, degraded raids are force
started. If you have hardware, which takes a very long time to announce its
drives, you might want to extend this value.

**rd.timeout=**__<seconds>__::
specify how long dracut should wait for devices to appear. The
default is '0', which means 'forever'. Note that this timeout
should be longer than rd.retry to allow for proper configuration.

**rd.noverifyssl**::
accept self-signed certificates for ssl downloads.


7
modules.d/98systemd/rootfs-generator.sh

@ -5,8 +5,11 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh @@ -5,8 +5,11 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
generator_wait_for_dev()
{
local _name
local _timeout

_name="$(str_replace "$1" '/' '\x2f')"
_timeout=$(getarg rd.timeout)
_timeout=${_timeout:-0}

[ -e "$hookdir/initqueue/finished/devexists-${_name}.sh" ] && return 0

@ -27,7 +30,7 @@ generator_wait_for_dev() @@ -27,7 +30,7 @@ generator_wait_for_dev()
mkdir -p /run/systemd/generator/${_name}.device.d
{
echo "[Unit]"
echo "JobTimeoutSec=0"
echo "JobTimeoutSec=$_timeout"
} > /run/systemd/generator/${_name}.device.d/timeout.conf
fi
}
@ -58,6 +61,6 @@ case "$root" in @@ -58,6 +61,6 @@ case "$root" in
rootok=1 ;;
esac

[ "${root%%:*}" = "block" ] && generator_wait_for_dev "${root#block:}"
[ "${root%%:*}" = "block" ] && generator_wait_for_dev "${root#block:}" "$RDRETRY"

exit 0

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

@ -890,12 +890,16 @@ wait_for_dev() @@ -890,12 +890,16 @@ wait_for_dev()
local _name
local _needreload
local _noreload
local _timeout

if [ "$1" = "-n" ]; then
_noreload=1
shift
fi

_timeout=$(getarg rd.timeout)
_timeout=${_timeout:-0}

_name="$(str_replace "$1" '/' '\x2f')"

type mark_hostonly >/dev/null 2>&1 && mark_hostonly "$hookdir/initqueue/finished/devexists-${_name}.sh"
@ -922,7 +926,7 @@ wait_for_dev() @@ -922,7 +926,7 @@ wait_for_dev()
mkdir -p ${PREFIX}/etc/systemd/system/${_name}.device.d
{
echo "[Unit]"
echo "JobTimeoutSec=0"
echo "JobTimeoutSec=$_timeout"
} > ${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf
type mark_hostonly >/dev/null 2>&1 && mark_hostonly /etc/systemd/system/${_name}.device.d/timeout.conf
_needreload=1

Loading…
Cancel
Save