[arch-general] [PATCH 24/48] Flatten LVM deactivation if block in rc.shutdown.

Victor Lowther victor.lowther at gmail.com
Wed Jun 30 17:47:44 EDT 2010


---
 rc.shutdown |   52 +++++++++++++++++++++++-----------------------------
 1 files changed, 23 insertions(+), 29 deletions(-)

diff --git a/rc.shutdown b/rc.shutdown
index b2278b6..b7b7d45 100755
--- a/rc.shutdown
+++ b/rc.shutdown
@@ -65,7 +65,7 @@ stat_busy "Unmounting Filesystems"
 stat_done
 
 # Kill non-root encrypted partition mappings
-if [ -f /etc/crypttab -a -n "$(/bin/grep -v ^# /etc/crypttab | /bin/grep -v ^$)" ]; then
+if [[ -f /etc/crypttab ]]; then
 	stat_busy "Deactivating encrypted volumes:"
 	# Arch cryptsetup packages traditionally contained the binaries
 	#  /usr/sbin/cryptsetup
@@ -73,38 +73,32 @@ if [ -f /etc/crypttab -a -n "$(/bin/grep -v ^# /etc/crypttab | /bin/grep -v ^$)"
 	# By default, initscripts used the /sbin/cryptsetup.static.
 	# Newer packages will only have /sbin/cryptsetup and no static binary
 	# This ensures maximal compatibility with the old and new layout
-	if [ -x /sbin/cryptsetup ]; then
-		CS=/sbin/cryptsetup
-	elif [ -x /usr/sbin/cryptsetup ]; then
-		CS=/usr/sbin/cryptsetup
+        for CS in /sbin/cryptsetup /usr/sbin/cryptsetup \
+            /sbin/cryptsetup.static ''; do
+            [[ -x $CS ]] && break
+        done
+        if [[ ! $CS ]]; then
+            stat_append " Failed, unable to find cryptsetup."
+            stat_fail
 	else
-		CS=/sbin/cryptsetup.static
-	fi
-	do_uncrypt() {
-		if [ $# -ge 3 ]; then
-			if [ -b /dev/mapper/$1 ] ;then
-				stat_append "${1}.."
-				$CS remove $1 >/dev/null 2>&1
-				if [ $? -ne 0 ]; then
-					stat_append "failed "
-				else
-					stat_append "ok "
-				fi
-			fi
+            while read name src passwd opts; do
+                [[ ! $name || ${name:0:1} = '#']] && continue
+                [[ -b /dev/mapper/$name ]] || continue
+		stat_append "${1}.."
+		if "$CS" remove "$name" >/dev/null 2>&1; then
+		    stat_append "ok "
+                else
+		    stat_append "failed "
 		fi
-	}
-	while read line; do
-		eval do_uncrypt "$line"
-	done </etc/crypttab
-	stat_done
+	    done </etc/crypttab
+        fi
+        stat_done
 fi
 
-if [ "$USELVM" = "yes" -o "$USELVM" = "YES" ]; then
-	if [ -x /sbin/lvm -a -d /sys/block ]; then
-		stat_busy "Deactivating LVM2 groups"
-		/sbin/lvm vgchange --ignorelockingfailure -an >/dev/null 2>&1
-		stat_done
-	fi
+if [[ $USELVM =~ yes|YES && -x /sbin/lvm && -d /sys/block ]]; then
+    stat_busy "Deactivating LVM2 groups"
+    /sbin/lvm vgchange --ignorelockingfailure -an >/dev/null 2>&1
+    stat_done
 fi
 
 stat_busy "Remounting Root Filesystem Read-only"
-- 
1.7.1



More information about the arch-general mailing list