for f in "/$1"/*.sh; do [ -f "$f" ] && . "$f"; done
}
+check_finished() {
+ local f
+ for f in /initqueue-finished/*.sh; do [ -f "$f" ] && { ( . "$f" ) || return 1; } ; done
+ return 0
+}
+
source_conf() {
local f
[ "$1" ] && [ -d "/$1" ] || return
}
udevsettle() {
+ local exit_if_exists;
+
[ -z "$UDEVVERSION" ] && UDEVVERSION=$(udevadm --version)
if [ $UDEVVERSION -ge 143 ]; then
- udevadm settle --exit-if-exists=/initqueue/work --exit-if-exists=/dev/root
+ udevadm settle --exit-if-exists=/initqueue/work $settle_exit_if_exists
else
udevadm settle --timeout=30
fi
i=0
while :; do
- # bail out, if we have mounted the root filesystem
- [ -d "$NEWROOT/proc" ] && break;
-
- # check if root can be mounted
- [ -e /dev/root ] && break;
+ check_finished && break
+
udevsettle
- # bail out, if we have mounted the root filesystem
- [ -d "$NEWROOT/proc" ] && break;
- # check if root can be mounted
- [ -e /dev/root ] && break;
-
- unset queuetriggered
+ check_finished && break
+
if [ -f /initqueue/work ]; then
rm /initqueue/work
- queuetriggered="1"
fi
for job in /initqueue/*.sh; do
[ -e "$job" ] || break
job=$job . $job
-
- # bail out, if we have mounted the root filesystem
- [ -d "$NEWROOT/proc" ] && break;
- # check if root can be mounted
- [ -e /dev/root ] && break;
+ check_finished && break 2
done
- [ -n "$queuetriggered" ] && continue
-
- if $UDEV_QUEUE_EMPTY >/dev/null 2>&1; then
+ $UDEV_QUEUE_EMPTY >/dev/null 2>&1 || continue
- modprobe scsi_wait_scan && rmmod scsi_wait_scan
+ modprobe scsi_wait_scan && rmmod scsi_wait_scan
- $UDEV_QUEUE_EMPTY >/dev/null 2>&1 || continue
+ $UDEV_QUEUE_EMPTY >/dev/null 2>&1 || continue
- unset queuetriggered
- for job in /initqueue-settled/*.sh; do
- [ -e "$job" ] || break
-
- queuetriggered="1"
-
- job=$job . $job
-
- # bail out, if we have mounted the root filesystem
- [ -d "$NEWROOT/proc" ] && break 2;
+ for job in /initqueue-settled/*.sh; do
+ [ -e "$job" ] || break
+ job=$job . $job
+ check_finished && break 2
+ done
- # check if root can be mounted
- [ -e /dev/root ] && break 2;
- done
+ $UDEV_QUEUE_EMPTY >/dev/null 2>&1 || continue
- # no more udev jobs and queues empty.
- sleep 0.5
- i=$(($i+1))
- [ $i -gt 20 ] \
- && { flock -s 9 ; emergency_shell "No root device found"; } 9>/.console_lock
- fi
+ # no more udev jobs and queues empty.
+ sleep 0.5
+ i=$(($i+1))
+ [ $i -gt 20 ] \
+ && { flock -s 9 ; emergency_shell "No root device found"; } 9>/.console_lock
done
unset job
unset queuetriggered