You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.1 KiB
65 lines
2.1 KiB
From 5a3b267d06cc81fcb7e0374c7656a1f48d031497 Mon Sep 17 00:00:00 2001 |
|
From: Harald Hoyer <harald@redhat.com> |
|
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 9810026d..a11ce595 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
|
|
|