add wait_for_dev() and wait_for_mount()
parent
9549014694
commit
b0692d0311
|
@ -4,13 +4,15 @@
|
||||||
|
|
||||||
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
|
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
|
||||||
|
|
||||||
if [ -e /dev/root ]; then
|
dev="${1:-/dev/root}"
|
||||||
if strstr "$(udevadm info --query=env --name=/dev/root)" "ID_FS_TYPE=btrfs"; then
|
|
||||||
|
if [ -e "$dev" ]; then
|
||||||
|
if strstr "$(udevadm info --query=env \"--name=$dev\")" "ID_FS_TYPE=btrfs"; then
|
||||||
info "Checking, if btrfs device complete"
|
info "Checking, if btrfs device complete"
|
||||||
unset __btrfs_mount
|
unset __btrfs_mount
|
||||||
mount -o ro /dev/root /tmp >/dev/null 2>&1
|
mount -o ro "$dev" /tmp >/dev/null 2>&1
|
||||||
__btrfs_mount=$?
|
__btrfs_mount=$?
|
||||||
[ $__btrfs_mount -eq 0 ] && umount /dev/root >/dev/null 2>&1
|
[ $__btrfs_mount -eq 0 ] && umount "$dev" >/dev/null 2>&1
|
||||||
exit $__btrfs_mount
|
exit $__btrfs_mount
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -9,12 +9,11 @@ case "$root" in
|
||||||
printf 'SYMLINK=="%s", RUN+="/sbin/initqueue --settled --onetime --unique /sbin/dmsquash-live-root $env{DEVNAME}"\n' \
|
printf 'SYMLINK=="%s", RUN+="/sbin/initqueue --settled --onetime --unique /sbin/dmsquash-live-root $env{DEVNAME}"\n' \
|
||||||
${root#live:/dev/}
|
${root#live:/dev/}
|
||||||
} >> /etc/udev/rules.d/99-live-squash.rules
|
} >> /etc/udev/rules.d/99-live-squash.rules
|
||||||
echo '[ -e /dev/root ]' > $hookdir/initqueue/finished/dmsquash.sh
|
wait_for_dev "${root#live:}"
|
||||||
;;
|
;;
|
||||||
live:*)
|
live:*)
|
||||||
if [ -f "${root#live:}" ]; then
|
if [ -f "${root#live:}" ]; then
|
||||||
/sbin/initqueue --settled --onetime --unique /sbin/dmsquash-live-root "${root#live:}"
|
/sbin/initqueue --settled --onetime --unique /sbin/dmsquash-live-root "${root#live:}"
|
||||||
echo '[ -e /dev/root ]' > $hookdir/initqueue/finished/dmsquash.sh
|
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
|
@ -6,5 +6,4 @@ if [ "${root%%:*}" = "liveiso" ]; then
|
||||||
printf 'KERNEL=="loop0", RUN+="/sbin/initqueue --settled --onetime --unique /sbin/dmsquash-live-root `/sbin/losetup -f --show %s`"\n' \
|
printf 'KERNEL=="loop0", RUN+="/sbin/initqueue --settled --onetime --unique /sbin/dmsquash-live-root `/sbin/losetup -f --show %s`"\n' \
|
||||||
${root#liveiso:}
|
${root#liveiso:}
|
||||||
} >> /etc/udev/rules.d/99-liveiso-mount.rules
|
} >> /etc/udev/rules.d/99-liveiso-mount.rules
|
||||||
echo '[ -e /dev/root ]' > $hookdir/initqueue/finished/dmsquash.sh
|
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -10,12 +10,7 @@ if ! getargbool 1 rd.lvm -n rd_NO_LVM; then
|
||||||
rm -f /etc/udev/rules.d/64-lvm*.rules
|
rm -f /etc/udev/rules.d/64-lvm*.rules
|
||||||
else
|
else
|
||||||
for dev in $(getargs rd.lvm.vg rd_LVM_VG=) $(getargs rd.lvm.lv rd_LVM_LV=); do
|
for dev in $(getargs rd.lvm.vg rd_LVM_VG=) $(getargs rd.lvm.lv rd_LVM_LV=); do
|
||||||
printf '[ -e "/dev/%s" ] || return 1\n' $dev \
|
wait_for_dev "/dev/$dev"
|
||||||
>> $hookdir/initqueue/finished/lvm.sh
|
|
||||||
{
|
|
||||||
printf '[ -e "/dev/%s" ] || ' $dev
|
|
||||||
printf 'warn "LVM "%s" not found"\n' $dev
|
|
||||||
} >> $hookdir/emergency/90-lvm.sh
|
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -76,5 +76,3 @@ rootok=1
|
||||||
# Shut up init error check
|
# Shut up init error check
|
||||||
[ -z "$root" ] && root="iscsi"
|
[ -z "$root" ] && root="iscsi"
|
||||||
|
|
||||||
echo '[ -e /dev/root ]' > $hookdir/initqueue/finished/iscsi.sh
|
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ if [ "${root%%:*}" = "nbd" ] ; then
|
||||||
|
|
||||||
fi
|
fi
|
||||||
netroot=$root
|
netroot=$root
|
||||||
|
unset root
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# If it's not nbd we don't continue
|
# If it's not nbd we don't continue
|
||||||
|
@ -55,7 +56,8 @@ incol2 /proc/devices nbd || modprobe nbd || die "nbdroot requested but kernel/in
|
||||||
rootok=1
|
rootok=1
|
||||||
|
|
||||||
# Shut up init error check
|
# Shut up init error check
|
||||||
[ -z "$root" ] && root="nbd"
|
if [ -z "$root" ]; then
|
||||||
|
root=block:/dev/root
|
||||||
echo '[ -e /dev/root ]' > $hookdir/initqueue/finished/nbd.sh
|
wait_for_dev /dev/root
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
|
@ -35,13 +35,7 @@ if [ -n "$resume" ]; then
|
||||||
printf '[ -e "%s" ] && { ln -s "%s" /dev/resume; rm "$job"; }\n' \
|
printf '[ -e "%s" ] && { ln -s "%s" /dev/resume; rm "$job"; }\n' \
|
||||||
"$resume" "$resume" >> $hookdir/initqueue/settled/resume.sh
|
"$resume" "$resume" >> $hookdir/initqueue/settled/resume.sh
|
||||||
|
|
||||||
echo '[ -e /dev/resume ]' > $hookdir/initqueue/finished/resume.sh
|
wait_for_dev "/dev/resume"
|
||||||
|
|
||||||
{
|
|
||||||
printf '[ -e /dev/resume ] || '
|
|
||||||
printf 'warn "resume device "%s" not found"\n' "$resume"
|
|
||||||
} >> $hookdir/emergency/00-resume.sh
|
|
||||||
|
|
||||||
|
|
||||||
elif ! getarg noresume; then
|
elif ! getarg noresume; then
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,5 +13,5 @@ if [ "${root%%:*}" = "block" ]; then
|
||||||
printf '[ -e "%s" ] && { ln -s "%s" /dev/root 2>/dev/null; rm "$job"; }\n' \
|
printf '[ -e "%s" ] && { ln -s "%s" /dev/root 2>/dev/null; rm "$job"; }\n' \
|
||||||
"${root#block:}" "${root#block:}" > $hookdir/initqueue/settled/blocksymlink.sh
|
"${root#block:}" "${root#block:}" > $hookdir/initqueue/settled/blocksymlink.sh
|
||||||
|
|
||||||
echo '[ -e /dev/root ]' > $hookdir/initqueue/finished/block.sh
|
wait_for_dev "${root#block:}"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -261,7 +261,10 @@ source_hook() {
|
||||||
|
|
||||||
check_finished() {
|
check_finished() {
|
||||||
local f
|
local f
|
||||||
for f in $hookdir/initqueue/finished/*.sh; do { [ -e "$f" ] && ( . "$f" ) ; } || return 1 ; done
|
for f in $hookdir/initqueue/finished/*.sh; do
|
||||||
|
[ "$f" = "$hookdir/initqueue/finished/*.sh" ] && return 0
|
||||||
|
{ [ -e "$f" ] && ( . "$f" ) ; } || return 1
|
||||||
|
done
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -560,3 +563,27 @@ usable_root() {
|
||||||
done
|
done
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wait_for_mount()
|
||||||
|
{
|
||||||
|
local _name
|
||||||
|
_name="$(str_replace "$1" '/' '\\x2f')"
|
||||||
|
printf '. /lib/dracut-lib.sh\nismounted "%s"\n' $1 \
|
||||||
|
>> "$hookdir/initqueue/finished/ismounted-${_name}.sh"
|
||||||
|
{
|
||||||
|
printf 'ismounted "%s" || ' $1
|
||||||
|
printf 'warn "\"%s\" is not mounted"\n' $1
|
||||||
|
} >> "$hookdir/emergency/90-${_name}.sh"
|
||||||
|
}
|
||||||
|
|
||||||
|
wait_for_dev()
|
||||||
|
{
|
||||||
|
local _name
|
||||||
|
_name="$(str_replace "$1" '/' '\\x2f')"
|
||||||
|
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"
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue