fixes for initial fstab mtab dm devices
authorIan Kelling <iank@fsf.org>
Tue, 16 Apr 2019 20:23:22 +0000 (16:23 -0400)
committerIan Kelling <iank@fsf.org>
Tue, 16 Apr 2019 20:23:22 +0000 (16:23 -0400)
check-subvol-stale
mount-latest-subvol

index 0049ff011d12e95da1a4edbd902a6feb6bdb561d..cc032d41715425e07fd777c46bdf303bbffc6487 100644 (file)
@@ -82,6 +82,7 @@ for d; do
   vol=${d##*/}
   # second field, non-comment line == $d
   dev=$(sed -rn "s,^\s*([^#]\S*)\s+$d\s.*,\1,p" /etc/fstab /etc/mtab|head -n1)
+
   d dev=$dev
   subvol_dir=$(sed -rn "s,^\s*[^#]\S*\s+$d\s.*\bsubvol=([a-zA-A/]+).*,\1,p" /etc/fstab /etc/mtab|head -n1)
   d subvol_dir=$subvol_dir
@@ -89,7 +90,7 @@ for d; do
   # because the device in fstab for the rootfs can be different.
   for devx in $(btrfs fi show $dev| sed -rn 's#.*path (/\S+)$#\1#p'); do
     d devx=$devx
-    root_dir=$(sed -rn "s,^\s*$devx\s+(\S+).*\bsubvolid=[05]\b.*,\1,p" /etc/mtab|head -n1)
+    root_dir=$(sed -rn "s,^\s*$devx\s+(\S+).*\bsubvolid=[05]\b.*,\1,p" /etc/mtab /etc/fstab|head -n1)
     if [[ $root_dir ]]; then
       d root_dir=$root_dir
       break
index 033d9b8ba54ecc513c5a2c36818b7f27c06d21f7..359b534337669090503de236c2ab30467c35b4dd 100644 (file)
@@ -130,7 +130,14 @@ ret=0
 
 ##### begin setup fstab for subvols we care about ######
 root_dev=$(awk '$2 == "/" {print $1}' /etc/mtab)
-
+if [[ $root_dev == /dev/dm-* ]]; then
+  for d in /dev/mapper/*; do
+    if [[ $(readlink -f $d) == $root_dev ]]; then
+      root_dev=$d
+      break
+    fi
+  done
+fi
 
 if cryptsetup status $root_dev &>/dev/null; then
   crypt_dev=$root_dev