[SCM] live-boot branch, debian-next, updated. debian/3.0_a20-1-7-g41112e3

Tails developers amnesia at boum.org
Wed Sep 7 15:59:30 UTC 2011


The following commit has been merged in the debian-next branch:
commit 209828c38d8af6fa2eab68cd668ca9109261f249
Author: Tails developers <amnesia at boum.org>
Date:   Mon Nov 1 17:35:45 2010 +0100

    Adding a white_listed_devices parameter to find_cow_device and find_files.
    
    This will be needed for the upcoming persistent-media={removable,removable-usb}
    boot option.

diff --git a/scripts/live b/scripts/live
index 82f5413..de82082 100755
--- a/scripts/live
+++ b/scripts/live
@@ -1033,16 +1033,17 @@ find_snap ()
 	# Look for ${snap_label}.* in block devices
 	snap_label="${1}"
 	black_listed_devices="${2}"
+	white_listed_devices="${3}"
 
 	if [ "${PERSISTENT}" != "nofiles" ]
 	then
 		# search for image files
-		snapdata=$(find_files "${PERSISTENT_PATH}${snap_label}.squashfs ${PERSISTENT_PATH}${snap_label}.cpio.gz ${PERSISTENT_PATH}${snap_label}.ext2 ${PERSISTENT_PATH}${snap_label}.ext3 ${PERSISTENT_PATH}${snap_label}.ext4 ${PERSISTENT_PATH}${snap_label}.jffs2" "${black_listed_devices}")
+		snapdata=$(find_files "${PERSISTENT_PATH}${snap_label}.squashfs ${PERSISTENT_PATH}${snap_label}.cpio.gz ${PERSISTENT_PATH}${snap_label}.ext2 ${PERSISTENT_PATH}${snap_label}.ext3 ${PERSISTENT_PATH}${snap_label}.ext4 ${PERSISTENT_PATH}${snap_label}.jffs2" "${black_listed_devices}" "${white_listed_devices}")
 	fi
 
 	if [ -z "${snapdata}" ]
 	then
-		snapdata=$(find_cow_device "${snap_label}" "${black_listed_devices}")
+		snapdata=$(find_cow_device "${snap_label}" "${black_listed_devices}" "${white_listed_devices}")
 	fi
 	echo "${snapdata}"
 }
@@ -1351,7 +1352,7 @@ setup_unionfs ()
 		fi
 
 		# search for label and files (this could be hugely optimized)
-		cowprobe=$(find_cow_device "${root_persistence}")
+		cowprobe=$(find_cow_device "${root_persistence}" "${blacklistdev}" "${whitelistdev}")
 		if [ -b "${cowprobe}" ]
 		then
 			# Blacklist /cow device, to avoid inconsistent setups for overlapping snapshots
@@ -1363,17 +1364,17 @@ setup_unionfs ()
 			export PERSISTENCE_IS_ON
 		fi
 		# homecow just mount something on /home, this should be generalized some way
-		homecow=$(find_cow_device "${home_persistence}" "${blacklistdev}")
+		homecow=$(find_cow_device "${home_persistence}" "${blacklistdev}" "${whitelistdev}")
 		if [ -b "${homecow}" ]
 		then
 			PERSISTENCE_IS_ON="1"
 			export PERSISTENCE_IS_ON
 		fi
-		root_snapdata=$(find_snap "${root_snapshot_label}" "${blacklistdev}")
+		root_snapdata=$(find_snap "${root_snapshot_label}" "${blacklistdev}" "${whitelistdev}")
 		# This second type should be removed when snapshot will get smarter,
 		# hence when "/etc/live-snapshot*list" will be supported also by
 		# ext2|ext3|ext4|jffs2 snapshot types.
-		home_snapdata=$(find_snap "${home_snapshot_label}" "${blacklistdev}")
+		home_snapdata=$(find_snap "${home_snapshot_label}" "${blacklistdev}" "${whitelistdev}")
 
 		if [ -b "${cowprobe}" ]
 		then
diff --git a/scripts/live-helpers b/scripts/live-helpers
index 06bd186..7f8649f 100644
--- a/scripts/live-helpers
+++ b/scripts/live-helpers
@@ -283,10 +283,13 @@ find_cow_device ()
 {
 	# Returns a device containing a partition labeled "${pers_label}" or containing a file named the same way
 	#  in the latter case the partition containing the file is left mounted
-	#  if is not in black_listed_devices
+	#  if is not in black_listed_devices.
+	#  Additionally, if the white_listed_devices list is non-empty, the
+	#  parent block device of the returned device must be part of this list.
 	pers_label="${1}"
 	cow_backing="/${pers_label}-backing"
 	black_listed_devices="${2}"
+	white_listed_devices="${3}"
 
 	if [ -z "${PERSISTENT_PATH}" ]
 	then
@@ -305,6 +308,15 @@ find_cow_device ()
 			break
 		fi
 
+		if [ -n "${white_listed_devices}" ]
+		then
+			if echo "${white_listed_devices}" | grep -v -q -w "${fulldevname}"
+			then
+				# skip this device entirely
+				break
+			fi
+		fi
+
 		for dev in $(subdevices "${sysblock}")
 		do
 			devname=$(sys2dev "${dev}")
@@ -383,11 +395,15 @@ find_cow_device ()
 find_files ()
 {
 	# return the a string composed by device name, mountpoint an the first of ${filenames} found on a supported partition
+	#  if is not in black_listed_devices.
+	#  Additionally, if the white_listed_devices list is non-empty, the
+	#  parent block device of the returned device must be part of this list.
 	# FIXME: merge with above function
 
 	filenames="${1}"
 	snap_backing="/snap-backing"
 	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)
 	do
@@ -399,6 +415,15 @@ find_files ()
 			break
 		fi
 
+		if [ -n "${white_listed_devices}" ]
+		then
+			if echo "${white_listed_devices}" | grep -v -q -w "${fulldevname}"
+			then
+				# skip this device entirely
+				break
+			fi
+		fi
+
 		for dev in $(subdevices "${sysblock}")
 		do
 			devname=$(sys2dev "${dev}")

-- 
live-boot



More information about the debian-live-changes mailing list