[arch-projects] [RFC 18/23] Support the tmp= option for running mkfs on mapped device

Matthew Monaco dgbaley27 at 0x01b.net
Fri May 18 12:22:12 EDT 2012


From: Matthew Monaco <matthew.monaco at 0x01b.net>

It seems like some people use this. Use a new variable "tmpfs" to
contain the file system type. Default to ext4 (Debian does this). Use
the same variable to track the swap option too because we can only do
one or the other.
---
 cryptmount.sh |   21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/cryptmount.sh b/cryptmount.sh
index 37f5121..5320e3d 100755
--- a/cryptmount.sh
+++ b/cryptmount.sh
@@ -155,7 +155,7 @@ ct_main() {
 
 	# Pre-parse OPTIONS, a little ugly, but it works
 	preparse() {
-		local args swap
+		local args tmpfs
 		if ! ct_parse_options $OPTIONS; then
 			error "Invalid options string: $OPTIONS"
 			exit 1
@@ -392,7 +392,7 @@ ct_unmap() {
 
 ct_map() {
 
-	local name="$1" dev="$2" key="$3" args="" swap=0
+	local name="$1" dev="$2" key="$3" args="" tmpfs
 	local key_dev="" key_fstype="" key_mntpnt="" key_dev_umount=0
 	shift 3
 
@@ -401,7 +401,7 @@ ct_map() {
 		return 1
 	fi
 
-	# this function sets the args and swap variables
+	# this function sets the args and tmpfs variables
 	if ! ct_parse_options "$@"; then
 		error "Unable to parse options"
 		return 1
@@ -520,13 +520,20 @@ ct_map() {
 			ret=1
 		elif run cryptsetup create $key $args "$name" "$dev"; then
 			info "sucessfully mapped '$dev' to '/dev/mapper/$name'"
-			if [ $swap -eq 1 ]; then
+			if [ "$tmpfs" = "swap" ]; then
 				if run mkswap -f -L "$name" "/dev/mapper/$name"; then
 					info "mkswap successful on '/dev/mapper/$name'"
 				else
 					error "mkswap failed for '/dev/mapper/$name'"
 					ret=1
 				fi
+			elif [ "$tmpfs" ]; then
+				if run mkfs -t "$tmpfs" "/dev/mapper/$name"; then
+					info "mkfs successful on '/dev/mapper/$name'"
+				else
+					error "mkfs failed for '/dev/mapper/$name'"
+					ret=1
+				fi
 			fi
 		else
 			error "unable to map '$dev' to '/dev/maper/name/$name'"
@@ -617,7 +624,7 @@ ct_parse_options() {
 		case "$key" in
 			swap)
 				# set external variable
-				swap=1
+				tmpfs="swap"
 				;;
 			luks|plain)
 				warn "Ignoring option $key, LUKS volumes are automatically detected"
@@ -629,7 +636,9 @@ ct_parse_options() {
 				warn "Ignoring Debian specific option '$key'"
 				;;
 			tmp)
-				warn "The tmp= option is not supported"
+				# set an external variable
+				[ -z "$val" ] && msg "Defaulting tmp to ext4"
+				tmpfs="${val:-ext4}"
 				;;
 			size)
 				args="$args --key-size $val"
-- 
1.7.10.2



More information about the arch-projects mailing list