From 5a3b267d06cc81fcb7e0374c7656a1f48d031497 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 25 Feb 2014 12:54:28 +0100 Subject: [PATCH] systemd/rootfs-generator.sh: generate units in /run/systemd/generator Generate the units in /run/systemd/generator, so they are picked up by systemd. https://bugzilla.redhat.com/show_bug.cgi?id=1069133 https://bugzilla.redhat.com/show_bug.cgi?id=949697 --- modules.d/98systemd/rootfs-generator.sh | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/modules.d/98systemd/rootfs-generator.sh b/modules.d/98systemd/rootfs-generator.sh index 9810026..a11ce59 100755 --- a/modules.d/98systemd/rootfs-generator.sh +++ b/modules.d/98systemd/rootfs-generator.sh @@ -3,6 +3,37 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh + +generator_wait_for_dev() +{ + local _name + + _name="$(str_replace "$1" '/' '\x2f')" + + [ -e "$hookdir/initqueue/finished/devexists-${_name}.sh" ] && return 0 + + printf '[ -e "%s" ]\n' $1 \ + >> "$hookdir/initqueue/finished/devexists-${_name}.sh" + { + printf '[ -e "%s" ] || ' $1 + printf 'warn "\"%s\" does not exist"\n' $1 + } >> "$hookdir/emergency/80-${_name}.sh" + + _name=$(dev_unit_name "$1") + if ! [ -L /run/systemd/generator/initrd.target.wants/${_name}.device ]; then + [ -d /run/systemd/generator/initrd.target.wants ] || mkdir -p /run/systemd/generator/initrd.target.wants + ln -s ../${_name}.device /run/systemd/generator/initrd.target.wants/${_name}.device + fi + + if ! [ -f /run/systemd/generator/${_name}.device.d/timeout.conf ]; then + mkdir -p /run/systemd/generator/${_name}.device.d + { + echo "[Unit]" + echo "JobTimeoutSec=3600" + } > /run/systemd/generator/${_name}.device.d/timeout.conf + fi +} + root=$(getarg root=) case "$root" in block:LABEL=*|LABEL=*) @@ -29,6 +60,6 @@ case "$root" in rootok=1 ;; esac -[ "${root%%:*}" = "block" ] && wait_for_dev -n "${root#block:}" +[ "${root%%:*}" = "block" ] && generator_wait_for_dev "${root#block:}" exit 0