[SCM] live-boot branch, debian-next, updated. debian/3.0_a25-1-70-ga39a167

Daniel Baumann daniel at debian.org
Thu Apr 5 06:00:33 UTC 2012


The following commit has been merged in the debian-next branch:
commit 918242b47944da2a6af5e6fe505b743b465eea40
Author: Tails developers <amnesia at boum.org>
Date:   Tue Feb 14 16:39:13 2012 +0100

    Refactor find_persistent_media().

diff --git a/scripts/live-helpers b/scripts/live-helpers
index 9282df6..9dc1242 100644
--- a/scripts/live-helpers
+++ b/scripts/live-helpers
@@ -740,6 +740,61 @@ open_luks_device ()
 	done
 }
 
+probe_for_fs_label () {
+	local overlays="${1}"
+	local snapshots="${2}"
+	local dev="${3}"
+
+	for label in ${overlays} ${snapshots}
+	do
+		if [ "$(/sbin/blkid -s LABEL -o value $dev 2>/dev/null)" = "${label}" ]
+		then
+			echo "${label}=${dev}"
+		fi
+	done
+}
+
+probe_for_file_name () {
+	local overlays="${1}"
+	local snapshots="${2}"
+	local dev="${3}"
+
+	local devfstype="$(get_fstype ${dev})"
+	local backing="${rootmnt}/live/persistent/$(basename ${dev})"
+	local ret=""
+	if is_supported_fs ${devfstype} && mkdir -p "${backing}" && \
+	   try_mount "${dev}" "${backing}" "rw" "${devfstype}"
+	then
+		for label in ${overlays}
+		do
+			path=${backing}/${PERSISTENT_PATH}${label}
+			if [ -f "${path}" ]
+			then
+				local loopdev=$(setup_loop "${path}" "loop" "/sys/block/loop*")
+				ret="${ret} ${label}=${loopdev}"
+			fi
+		done
+		for label in ${snapshots}
+		do
+			for ext in squashfs cpio.gz ext2 ext3 ext4 jffs2
+			do
+				path="${PERSISTENT_PATH}${label}.${ext}"
+				if [ -f "${backing}/${path}" ]
+				then
+					ret="${ret} ${label}=${dev}:${backing}:${path}"
+				fi
+			done
+		done
+
+		if [ -n "${ret}" ]
+		then
+			echo ${ret}
+		else
+			umount ${backing} > /dev/null 2>&1 || true
+		fi
+	fi
+}
+
 find_persistent_media ()
 {
 	# Scans devices for overlays and snapshots, and returns a whitespace
@@ -790,63 +845,40 @@ find_persistent_media ()
 			continue
 		fi
 
+		# Probe for filesystems with matching label
 		if echo ${PERSISTENT_STORAGE} | grep -qe "\<filesystem\>"
 		then
-			for label in ${overlays} ${snapshots}
-			do
-				if [ "$(/sbin/blkid -s LABEL -o value $dev 2>/dev/null)" = "${label}" ]
-				then
-					echo "${label}=${dev}"
-					# skip to the next device
-					continue 2
-				fi
-			done
+			result=$(probe_for_fs_label "${overlays}" "${snapshots}" ${dev})
+			if [ -n "${result}" ]
+			then
+				ret="${ret} ${result}"
+				continue
+			fi
 		fi
 
-		overlay_on_dev=""
-		snapshot_on_dev=""
+		# Probe for files with matching name on mounted partition
 		if echo ${PERSISTENT_STORAGE} | grep -qe "\<file\>"
 		then
-			devfstype="$(get_fstype ${dev})"
-			backing="${persistent_backing}/$(basename ${dev})"
-			mkdir -p "${backing}"
-			if is_supported_fs ${devfstype} && try_mount "${dev}" "${backing}" "rw" "${devfstype}"
+			result=$(probe_for_file_name "${overlays}" "${snapshots}" ${dev})
+			if [ -n "${result}" ]
 			then
-				for label in ${overlays}
-				do
-					path=${backing}/${PERSISTENT_PATH}${label}
-					if [ -f "${path}" ]
-					then
-						overlay_on_dev="yes"
-						echo "${label}=$(setup_loop "${path}" "loop" "/sys/block/loop*")"
-					fi
-				done
-
-				for label in ${snapshots}
-				do
-					for ext in squashfs cpio.gz ext2 ext3 ext4 jffs2
-					do
-						path="${PERSISTENT_PATH}${label}.${ext}"
-						if [ -f "${backing}/${path}" ]
-						then
-							snapshot_on_dev="yes"
-							echo "${label}=${dev}:${backing}:${path}"
-						fi
-					done
-				done
-			fi
-			if [ -z "${overlay_on_dev}" ] && [ -z "${snapshot_on_dev}" ]
-			then
-				umount ${backing} > /dev/null 2>&1 || true
+				ret="${ret} ${result}"
+				continue
 			fi
 		fi
-		if [ -z "${overlay_on_dev}" ] && [ -z "${snapshot_on_dev}" ] && \
-		   [ -n "${luks_device}" ] && \
+
+		# Close luks device if it isn't used
+		if [ -z "${result}" ] && [ -n "${luks_device}" ] && \
 		   /sbin/cryptsetup status "${luks_device}" 1> /dev/null 2>&1
 		then
 			/sbin/cryptsetup luksClose "${luks_device}"
 		fi
 	done
+
+	if [ -n "${ret}" ]
+	then
+		echo ${ret}
+	fi
 }
 
 get_mac ()

-- 
live-boot



More information about the debian-live-changes mailing list