From: Harald Hoyer Date: Wed, 12 Jun 2013 10:43:14 +0000 (+0200) Subject: dmsquash-live/iso-scan: wait until the iso-scan/filename is found X-Git-Tag: 028~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aef0f557910d73bf9a6b2a1bdf670135e4c4d152;p=thirdparty%2Fdracut.git dmsquash-live/iso-scan: wait until the iso-scan/filename is found Do not only run once, but wait until all devices are found. --- diff --git a/modules.d/90dmsquash-live/iso-scan.sh b/modules.d/90dmsquash-live/iso-scan.sh index 9300d1266..99eea0e3c 100755 --- a/modules.d/90dmsquash-live/iso-scan.sh +++ b/modules.d/90dmsquash-live/iso-scan.sh @@ -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 diff --git a/modules.d/90dmsquash-live/parse-iso-scan.sh b/modules.d/90dmsquash-live/parse-iso-scan.sh index be071fd64..c79bf2cf5 100755 --- a/modules.d/90dmsquash-live/parse-iso-scan.sh +++ b/modules.d/90dmsquash-live/parse-iso-scan.sh @@ -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