X-Git-Url: https://iankelling.org/git/?p=distro-setup;a=blobdiff_plain;f=mount-latest-subvol;h=359b534337669090503de236c2ab30467c35b4dd;hp=d36685f3b41e6bf717b5a31ba8f152cfe1d79bde;hb=0b6d44c7f3d567e0a26138509c8a24cb57c69b50;hpb=565857e91b7e8c671ec3f4314cb21b0a85c01d0f diff --git a/mount-latest-subvol b/mount-latest-subvol index d36685f..359b534 100644 --- a/mount-latest-subvol +++ b/mount-latest-subvol @@ -14,6 +14,9 @@ # limitations under the License. # usage: mount-latest-subvol +# +# Note, at source location, intentionally not executable, run and read +# install-my-scripts. cd / [[ $EUID == 0 ]] || exec sudo -E "$BASH_SOURCE" "$@" @@ -86,7 +89,7 @@ pid-check() { for p in ${pids}; do for m in ${my_pids[@]}; do if (( p == m )); then - echo "$0: error: pids to kill includes our pid or a parent" >&2 + echo "$0: error: pids to kill includes our pid or a parent. ps output:" >&2 ps -f -p $p exit 1 fi @@ -127,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 @@ -216,7 +226,9 @@ for vol in q a o i; do # if latest is already mounted, make sure binds are mounted and move on - if e check-subvol-stale $d; then + e check-subvol-stale $d + # populated by check-subvol-stale if stale + if ! fresh_snap=$(cat /nocow/btrfs-stale/$vol 2>/dev/null); then mnt $d for b in ${binds[@]}; do mnt $b @@ -224,14 +236,6 @@ for vol in q a o i; do continue fi - # populated by check-subvol-stale - fresh_snap=$(