package/fstools: fstab essential mount point hook
This commit is contained in:
parent
8e0b836b38
commit
ba9a67bb02
@ -5,6 +5,8 @@
|
||||
|
||||
START=11
|
||||
|
||||
FS_CONSUMER=/tmp/.fstab.consumer
|
||||
|
||||
check_uuid() {
|
||||
blkid --uuid "$1" >/dev/null 2>&1
|
||||
}
|
||||
@ -22,10 +24,16 @@ wait_essential() {
|
||||
[ $TIMEOUT -gt 0 ] || return 1
|
||||
config_get_bool enabled $1 "enabled" "0"
|
||||
config_get_bool essential $1 essential "0"
|
||||
[ "$enabled" = "0" -o "$essential" = "0" ] && return 0
|
||||
[ "$enabled" = "0" ] && return 0
|
||||
config_get target $1 "target"
|
||||
target=${target%%/}
|
||||
[ -z "$target" -o "$target" = "/" -o "$target" = "/rom" -o "$target" = "/overlay" ] && return 0
|
||||
|
||||
if [ "$essential" = "0" ]; then
|
||||
[ -f $FS_CONSUMER ] || return 0
|
||||
grep -Fqxm1 "$target" $FS_CONSUMER || grep -q "^$target/" $FS_CONSUMER || return 0
|
||||
fi
|
||||
|
||||
/bin/mount | grep -qF " on $target type " && return 0
|
||||
|
||||
local uuid label device check_cmd
|
||||
@ -54,15 +62,28 @@ wait_essential() {
|
||||
return 1
|
||||
}
|
||||
|
||||
# for /lib/fstab.d/*.sh call
|
||||
fstab_add_essential_mountpoint() {
|
||||
echo "$1" >>$FS_CONSUMER.raw
|
||||
}
|
||||
|
||||
check_block_ready() {
|
||||
TIMEOUT=$(uci -q get fstab.@global[0].essential_timeout)
|
||||
[ -z "$TIMEOUT" ] && TIMEOUT=5
|
||||
[ $TIMEOUT -ge 0 ] || return 0
|
||||
TIMEOUT=$(($TIMEOUT + 1))
|
||||
local ORIG=$TIMEOUT
|
||||
|
||||
>$FS_CONSUMER.raw
|
||||
include /lib/fstab.d
|
||||
busybox sort -u $FS_CONSUMER.raw | grep / >$FS_CONSUMER
|
||||
rm -f $FS_CONSUMER.raw
|
||||
[ -s $FS_CONSUMER ] || rm -f $FS_CONSUMER
|
||||
|
||||
config_load fstab
|
||||
config_foreach wait_essential mount
|
||||
[ $TIMEOUT -gt 0 ] && echo "fstab: essential device(s) ready after $(($ORIG - $TIMEOUT)) seconds" >/dev/kmsg
|
||||
rm -f $FS_CONSUMER
|
||||
}
|
||||
|
||||
boot() {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user