dmsquash-live/iso-scan: wait until the iso-scan/filename is found

Do not only run once, but wait until all devices are found.
master
Harald Hoyer 2013-06-12 12:43:14 +02:00
parent 66ed711ccf
commit aef0f55791
2 changed files with 23 additions and 10 deletions

View File

@ -10,16 +10,29 @@ isofile=$1

[ -z "$isofile" ] && exit 1

ismounted "/run/initramfs/isoscan" && exit 1

mkdir -p "/run/initramfs/isoscan"
for dev in /dev/disk/by-uuid/*; do
mount -t auto -o ro "$dev" "/run/initramfs/isoscan" || continue
if [ -f "/run/initramfs/isoscan/$isofile" ]; then
losetup -f "/run/initramfs/isoscan/$isofile"
exit 0
else
umount "/run/initramfs/isoscan"
fi
done

do_iso_scan() {
local _name
local dev
for dev in /dev/disk/by-uuid/*; do
_name=$(dev_unit_name "$dev")
[ -e /tmp/isoscan-${_name} ] && continue
> /tmp/isoscan-${_name}
mount -t auto -o ro "$dev" "/run/initramfs/isoscan" || continue
if [ -f "/run/initramfs/isoscan/$isofile" ]; then
losetup -f "/run/initramfs/isoscan/$isofile"
rm -f "$job"
exit 0
else
umount "/run/initramfs/isoscan"
fi
done
}

do_iso_scan

rmdir "/run/initramfs/isoscan"
exit 1

View File

@ -8,7 +8,7 @@ isofile=$(getarg iso-scan/filename)

if [ -n "$isofile" ]; then
{
printf 'KERNEL=="loop0", RUN+="/sbin/initqueue --settled --onetime --unique /sbin/iso-scan %s"\n' \
printf 'KERNEL=="loop0", RUN+="/sbin/initqueue --settled --unique /sbin/iso-scan %s"\n' \
"'${isofile}'"
} >> /etc/udev/rules.d/99-isofile-mount.rules
fi