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 2014-12-11 15:46:05 +01:00 committed by Harald Hoyer
parent f34a2ef14d
commit 56663e7e32
3 changed files with 16 additions and 4 deletions

View File

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


**rd.retry=**__<seconds>__:: **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 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 started. If you have hardware, which takes a very long time to announce its
drives, you might want to extend this value. 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**:: **rd.noverifyssl**::
accept self-signed certificates for ssl downloads. accept self-signed certificates for ssl downloads.



View File

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


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


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


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


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


exit 0 exit 0

View File

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


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


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

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


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