]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
base/dracut-lib.sh:wait_for_dev()/cancel_wait_for_dev() set systemd timeouts
authorHarald Hoyer <harald@redhat.com>
Thu, 4 Apr 2013 10:56:42 +0000 (12:56 +0200)
committerHarald Hoyer <harald@redhat.com>
Fri, 5 Apr 2013 06:32:17 +0000 (08:32 +0200)
Set systemd unit timeouts for the devices we wait for. The systemd
default is 90 seconds, which is way too low for complicated setups.

modules.d/99base/dracut-lib.sh
modules.d/99base/module-setup.sh
modules.d/99base/wait-host-devs.sh [deleted file]

index 79fc95310dba2560d8bea824a26a78ed8a9986c8..f2b16d3513fa4417523343c8d23c63a28659a0f7 100755 (executable)
@@ -849,6 +849,13 @@ wait_for_dev()
             [ -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
         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
 }
 
@@ -858,6 +865,12 @@ cancel_wait_for_dev()
     _name="$(str_replace "$1" '/' '\\x2f')"
     rm -f "$hookdir/initqueue/finished/devexists-${_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() {
@@ -1023,7 +1036,7 @@ listlist() {
 
 # returns OK if both lists contain the same values.  An order and a duplication
 # doesn't matter.
-# 
+#
 # $1 = separator
 # $2 = list1
 # $3 = list2
index 7f2940b79ebf493d915bf3ebb8703bd06f47c6e1..4955b7ba9291a50084c97e70ce637a7357a1c689 100755 (executable)
@@ -89,18 +89,18 @@ install() {
 
     ## save host_devs which we need bring up
     (
+        if dracut_module_included "systemd"; then
+            DRACUT_SYSTEMD=1
+        fi
+        PREFIX="$initdir"
+
         . "$moddir/dracut-lib.sh"
+
         for _dev in ${host_devs[@]}; do
             _pdev=$(get_persistent_dev $_dev)
 
             case "$_pdev" in
-                /dev/?*)
-                    if ! dracut_module_included "systemd"; then
-                        PREFIX="$initdir" wait_for_dev $_pdev
-                    else
-                        DRACUT_SYSTEMD=1 PREFIX="$initdir" wait_for_dev $_pdev
-                    fi
-                    ;;
+                /dev/?*) wait_for_dev $_pdev;;
                 *) ;;
             esac
         done
diff --git a/modules.d/99base/wait-host-devs.sh b/modules.d/99base/wait-host-devs.sh
deleted file mode 100644 (file)
index ce84922..0000000
+++ /dev/null
@@ -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