]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
dmsquash-live/iso-scan: wait until the iso-scan/filename is found
authorHarald Hoyer <harald@redhat.com>
Wed, 12 Jun 2013 10:43:14 +0000 (12:43 +0200)
committerHarald Hoyer <harald@redhat.com>
Wed, 12 Jun 2013 10:49:03 +0000 (12:49 +0200)
Do not only run once, but wait until all devices are found.

modules.d/90dmsquash-live/iso-scan.sh
modules.d/90dmsquash-live/parse-iso-scan.sh

index 9300d126653d792e7b2385da67d535e52e36534f..99eea0e3c818237201ac0eef4c32fc353d970c6b 100755 (executable)
@@ -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
index be071fd64a457cfa691365567c12c7b86495faab..c79bf2cf5fc891432649dd6d2572e6caa8106b6e 100755 (executable)
@@ -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