Fix symlink problem with newer device mapper, patch based on work by Thomas Koehler.
authorMichael Prokop <mika@grml.org>
Sun, 26 Dec 2010 22:44:11 +0000 (23:44 +0100)
committerMichael Prokop <mika@grml.org>
Sun, 26 Dec 2010 22:45:21 +0000 (23:45 +0100)
Original commit message by Thomas Koehler:

 Newer device mappers create /dev/mapper/grml-crypt_DEV
 as a symlink to /dev/dm-X, no longer as a block device.
 Unfortunately, after mounting, you only see /dev/dm-X in
 /etc/mtab and /proc/mounts, which broke the "stop" command
 in grml-crypt. By looping over all /dev/mapper/grml-crypt*
 files and checking if this is the correct one, this problem
 can be fixed.

Thanks: Thomas Koehler <jean-luc@picard.franken.de>

grml-crypt

index 47ca333..de3c70c 100755 (executable)
@@ -211,6 +211,19 @@ function actionStop
   dm_path_=`echo $dm_path_ |awk '{print $1}'` || die "could not get devicemapper name for $tmp_"
   dprint "dm_path_=\"$dm_path_\""
 
+  # check for symlinks
+  for dmapper in /dev/mapper/grml-crypt* ; do
+    link=$(readlink -f "$dmapper")
+    dprint "looping device mapper devices, dmapper=$dmapper => link=$link"
+    if [ "$link" = "$dm_path_" ] ; then
+      tmp_dm_path_="$dmapper"
+    fi
+  done
+
+  if [ -n "$tmp_dm_path_" ] ; then
+    dm_path_="$tmp_dm_path_"
+  fi
+
   dm_name_="${dm_path_##*/}"
   dprint "dm_name_=\"$dm_name_\""