[SCM] live-boot branch, debian-next, updated. debian/3.0_a22-1-25-gf885467

Daniel Baumann daniel at debian.org
Thu Nov 24 17:37:31 UTC 2011


The following commit has been merged in the debian-next branch:
commit 96921bdecf7f64923686e17114b6ef63e0f46245
Author: Tails developers <amnesia at boum.org>
Date:   Wed Nov 9 19:39:11 2011 +0100

    Refactoring device scanning in find_{cow_device,files}.

diff --git a/scripts/live-helpers b/scripts/live-helpers
index 31f84fa..90fa3b4 100644
--- a/scripts/live-helpers
+++ b/scripts/live-helpers
@@ -37,6 +37,38 @@ subdevices ()
 	echo ${r}
 }
 
+storage_devices()
+{
+	black_listed_devices="${1}"
+	white_listed_devices="${2}"
+
+	for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -vE "loop|ram|fd")
+	do
+		fulldevname=$(sys2dev "${sysblock}")
+
+		if echo "${black_listed_devices}" | grep -qw "${fulldevname}" || \
+			[ -n "${white_listed_devices}" ] && \
+			echo "${white_listed_devices}" | grep -vqw "${fulldevname}"
+		then
+			# skip this device entirely
+			continue
+		fi
+
+		for dev in $(subdevices "${sysblock}")
+		do
+			devname=$(sys2dev "${dev}")
+
+			if echo "${black_listed_devices}" | grep -qw "${devname}"
+			then
+				# skip this subdevice
+				continue
+			else
+				echo "${devname}"
+			fi
+		done
+	done
+}
+
 is_supported_fs ()
 {
 	fstype="${1}"
@@ -298,109 +330,81 @@ find_cow_device ()
 		pers_fpath=${cow_backing}/${PERSISTENT_PATH}/${pers_label}
 	fi
 
-	for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram | grep -v fd)
+	for dev in $(storage_devices "${black_listed_devices}" "${white_listed_devices}")
 	do
-		fulldevname=$(sys2dev "${sysblock}")
-
-		if echo "${black_listed_devices}" | grep -q -w "${fulldevname}"
+		# Checking for a luks device
+		if [ "${PERSISTENT_ENCRYPTION}" = "luks" ] && [ -e /sbin/cryptsetup ]
 		then
-			# skip this device entirely
-			break
-		fi
-
-		if [ -n "${white_listed_devices}" ]
-		then
-			if echo "${white_listed_devices}" | grep -v -q -w "${fulldevname}"
+			if ! modprobe dm-crypt
 			then
-				# skip this device entirely
-				break
+				log_warning_msg "Unable to load module dm-crypt"
+				continue
 			fi
-		fi
-
-		for dev in $(subdevices "${sysblock}")
-		do
-			devname=$(sys2dev "${dev}")
 
-			if echo "${black_listed_devices}" | grep -q -w "${devname}"
+			if ! /sbin/cryptsetup isLuks ${dev}
 			then
-				# skip this subdevice
+				# we only look for encrypted subdevices
 				continue
 			fi
 
-			# Checking for a luks device
-			if [ "${PERSISTENT_ENCRYPTION}" = "luks" ] && [ -e /sbin/cryptsetup ]
-			then
-				if ! modprobe dm-crypt
-				then
-					log_warning_msg "Unable to load module dm-crypt"
-					continue
-				fi
+			while true
+			do
+				load_keymap
 
-				if ! /sbin/cryptsetup isLuks ${devname}
-				then
-					# we only look for encrypted subdevices
-					continue
-				fi
+				/lib/cryptsetup/askpass "Enter passphrase for ${pers_label} on ${dev}: " | /sbin/cryptsetup -T 1 luksOpen ${dev} $(basename ${dev}) --key-file=-
+				error=${?}
 
-				while true
-				do
-					load_keymap
+				dev="/dev/mapper/$(basename ${dev})"
 
-					/lib/cryptsetup/askpass "Enter passphrase for ${pers_label} on ${devname}: " | /sbin/cryptsetup -T 1 luksOpen ${devname} $(basename ${devname}) --key-file=-
-					error=${?}
+				if [ 0 -eq ${error} ]
+				then
+					unset error
+					break
+				fi
 
-					devname="/dev/mapper/$(basename ${devname})"
+				echo >&6
+				echo -n "There was an error decrypting ${dev} ... Retry? [Y/n] " >&6
+				read answer
 
-					if [ 0 -eq ${error} ]
-					then
-						unset error
-						break
-					fi
-
-					echo >&6
-					echo -n "There was an error decrypting ${devname} ... Retry? [Y/n] " >&6
-					read answer
-
-					if [ "$(echo "${answer}" | cut -b1 | tr A-Z a-z)" = "n" ]
-					then
-						unset answer
-						# skip to next subdevice
-						continue 2
-					fi
-				done
-			fi
+				if [ "$(echo "${answer}" | cut -b1 | tr A-Z a-z)" = "n" ]
+				then
+					unset answer
+					# skip to next subdevice
+					continue 2
+				fi
+			done
+		fi
 
-			if echo ${PERSISTENT_STORAGE} | grep -qw filesystem && [ "$(/sbin/blkid -s LABEL -o value $devname 2>/dev/null)" = "${pers_label}" ]
-			then
-				echo "${devname}"
-				return 0
-			fi
+		if echo ${PERSISTENT_STORAGE} | grep -qw filesystem && [ "$(/sbin/blkid -s LABEL -o value $dev 2>/dev/null)" = "${pers_label}" ]
+		then
+			echo "${dev}"
+			return 0
+		fi
 
-			if ! echo ${PERSISTENT_STORAGE} | grep -qw file
-			then
-				# do not mount the device to find for image files
-				# just skip this
-				continue
-			fi
+		if ! echo ${PERSISTENT_STORAGE} | grep -qw file
+		then
+			# do not mount the device to find for image files
+			# just skip this
+			continue
+		fi
 
-			case "$(get_fstype ${devname})" in
-				vfat|ext2|ext3|ext4|jffs2)
-					mkdir -p "${cow_backing}"
-					if try_mount "${devname}" "${cow_backing}" "rw"
+		case "$(get_fstype ${dev})" in
+			vfat|ext2|ext3|ext4|jffs2)
+				mkdir -p "${cow_backing}"
+				if try_mount "${dev}" "${cow_backing}" "rw"
+				then
+					if [ -f "${pers_fpath}" ]
 					then
-						if [ -f "${pers_fpath}" ]
-						then
-							echo $(setup_loop "${pers_fpath}" "loop" "/sys/block/loop*")
-							return 0
-						else
-							umount ${cow_backing} > /dev/null 2>&1 || true
-						fi
+						echo $(setup_loop "${pers_fpath}" "loop" "/sys/block/loop*")
+						return 0
+					else
+						umount ${cow_backing} > /dev/null 2>&1 || true
 					fi
-					;;
-				*)
-					;;
-			esac
-		done
+				fi
+				;;
+			*)
+				;;
+		esac
 	done
 	return 1
 }
@@ -418,56 +422,28 @@ find_files ()
 	black_listed_devices="${2}"
 	white_listed_devices="${3}"
 
-	for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram | grep -v fd)
+	for dev in $(storage_devices "${black_listed_devices}" "${white_listed_devices}")
 	do
-		fulldevname=$(sys2dev "${sysblock}")
+		devfstype="$(get_fstype ${dev})"
 
-		if echo "${black_listed_devices}" | grep -q -w "${fulldevname}"
+		if is_supported_fs ${devfstype}
 		then
-			# skip this device entirely
-			break
-		fi
+			mkdir -p "${snap_backing}"
 
-		if [ -n "${white_listed_devices}" ]
-		then
-			if echo "${white_listed_devices}" | grep -v -q -w "${fulldevname}"
+			if try_mount "${dev}" "${snap_backing}" "ro" "${devfstype}"
 			then
-				# skip this device entirely
-				break
+				for filename in ${filenames}
+				do
+					if [ -f "${snap_backing}/${filename}" ]
+					then
+						echo "${dev} ${snap_backing} ${filename}"
+						umount ${snap_backing}
+						return 0
+					fi
+				done
 			fi
+			umount ${snap_backing}
 		fi
-
-		for dev in $(subdevices "${sysblock}")
-		do
-			devname=$(sys2dev "${dev}")
-			devfstype="$(get_fstype ${devname})"
-
-			if echo "${black_listed_devices}" | grep -q -w "${devname}"
-			then
-				# skip this subdevice
-				break
-			fi
-
-			if is_supported_fs ${devfstype}
-			then
-				mkdir -p "${snap_backing}"
-
-				if try_mount "${devname}" "${snap_backing}" "ro" "${devfstype}"
-				then
-					for filename in ${filenames}
-					do
-						if [ -f "${snap_backing}/${filename}" ]
-						then
-							echo "${devname} ${snap_backing} ${filename}"
-							umount ${snap_backing}
-							return 0
-						fi
-					done
-				fi
-
-				umount ${snap_backing}
-			fi
-		done
 	done
 }
 

-- 
live-boot



More information about the debian-live-changes mailing list