Enhancing devices search ordering.
authorT(A)ILS developers <amnesia@boum.org>
Wed, 20 Oct 2010 16:33:12 +0000 (18:33 +0200)
committerDaniel Baumann <daniel@debian.org>
Wed, 9 Mar 2011 16:59:20 +0000 (17:59 +0100)
E.g. prefer mounting /dev/sdb1 rather than /dev/sdb.

The isohybrid feature makes both valid devices for being searched for a live
filesystem image. Previous code mounted /dev/sdb on /live/image which makes it
hard to create a second partition on the USB stick.

This brings the need to explicitly check whether the full device is in the
blacklist before even considering its subdevices: the previous blacklist
checking code worked because the full device was always considered before its
subdevices, which is not true anymore.

scripts/live-helpers

index 0e9b0d0..b1883ff 100644 (file)
@@ -26,7 +26,7 @@ subdevices ()
        sysblock=${1}
        r=""
 
-       for dev in "${sysblock}" "${sysblock}"/*
+       for dev in "${sysblock}"/* "${sysblock}"
        do
                if [ -e "${dev}/dev" ]
                then
@@ -297,13 +297,21 @@ find_cow_device ()
 
        for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram | grep -v fd)
        do
+               fulldevname=$(sys2dev "${sysblock}")
+
+               if echo "${black_listed_devices}" | grep -q -w "${fulldevname}"
+               then
+                       # skip this device entirely
+                       break
+               fi
+
                for dev in $(subdevices "${sysblock}")
                do
                        devname=$(sys2dev "${dev}")
 
                        if echo "${black_listed_devices}" | grep -q -w "${devname}"
                        then
-                               # skip this device enterely
+                               # skip this subdevice
                                break
                        fi
 
@@ -383,6 +391,14 @@ find_files ()
 
        for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram | grep -v fd)
        do
+               fulldevname=$(sys2dev "${sysblock}")
+
+               if echo "${black_listed_devices}" | grep -q -w "${fulldevname}"
+               then
+                       # skip this device entirely
+                       break
+               fi
+
                for dev in $(subdevices "${sysblock}")
                do
                        devname=$(sys2dev "${dev}")
@@ -390,7 +406,7 @@ find_files ()
 
                        if echo "${black_listed_devices}" | grep -q -w "${devname}"
                        then
-                               # skip this device enterely
+                               # skip this subdevice
                                break
                        fi