]> git.ipfire.org Git - thirdparty/dracut.git/blame - modules.d/98systemd/dracut-initqueue.sh
use "rm --" to guard against filenames beginning with "-"
[thirdparty/dracut.git] / modules.d / 98systemd / dracut-initqueue.sh
CommitLineData
2c431e8e
HH
1#!/bin/sh
2# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
3# ex: ts=8 sw=4 sts=4 et filetype=sh
2c431e8e 4
aefea76c 5export DRACUT_SYSTEMD=1
2c431e8e 6if [ -f /dracut-state.sh ]; then
f1e9f613 7 . /dracut-state.sh 2>/dev/null
2c431e8e 8fi
f1e9f613
HH
9type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
10
2c431e8e 11source_conf /etc/conf.d
2c431e8e 12
7bd8f233 13make_trace_mem "hook initqueue" '1:shortmem' '2+:mem' '3+:slab'
68e7661c 14getarg 'rd.break=initqueue' -d 'rdbreak=initqueue' && emergency_shell -n initqueue "Break before initqueue"
2c431e8e 15
68e7661c 16RDRETRY=$(getarg rd.retry -d 'rd_retry=')
dbfaae0e 17RDRETRY=${RDRETRY:-180}
2c431e8e
HH
18RDRETRY=$(($RDRETRY*2))
19export RDRETRY
20
21main_loop=0
22export main_loop
23
24while :; do
25
26 check_finished && break
27
2663232a 28 udevadm settle --exit-if-exists=$hookdir/initqueue/work
2c431e8e
HH
29
30 check_finished && break
31
32 if [ -f $hookdir/initqueue/work ]; then
32bd2fbb 33 rm -f -- "$hookdir/initqueue/work"
2c431e8e
HH
34 fi
35
36 for job in $hookdir/initqueue/*.sh; do
37 [ -e "$job" ] || break
38 job=$job . $job
39 check_finished && break 2
40 done
41
11174408 42 udevadm settle --timeout=0 >/dev/null 2>&1 || continue
2c431e8e
HH
43
44 for job in $hookdir/initqueue/settled/*.sh; do
45 [ -e "$job" ] || break
46 job=$job . $job
47 check_finished && break 2
48 done
49
11174408 50 udevadm settle --timeout=0 >/dev/null 2>&1 || continue
2c431e8e
HH
51
52 # no more udev jobs and queues empty.
53 sleep 0.5
54
5cd7c104 55 if [ $main_loop -gt $((2*$RDRETRY/3)) ]; then
2c431e8e
HH
56 for job in $hookdir/initqueue/timeout/*.sh; do
57 [ -e "$job" ] || break
58 job=$job . $job
f62f3a21 59 udevadm settle --timeout=0 >/dev/null 2>&1 || main_loop=0
dbfaae0e 60 [ -f $hookdir/initqueue/work ] && main_loop=0
2c431e8e
HH
61 done
62 fi
63
64 main_loop=$(($main_loop+1))
9d787df1 65 [ $main_loop -gt $RDRETRY ] && action_on_fail "Could not boot." && break
2c431e8e
HH
66done
67
68unset job
69unset queuetriggered
70unset main_loop
71unset RDRETRY
72
2c431e8e 73export -p > /dracut-state.sh
f7231824 74
f1e9f613 75exit 0