X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=mount-latest-subvol;h=a8ff06d0b96082cbc1779ac3d653cb6451d16430;hb=e893484a0470843582699dc41fe9d69388c63c02;hp=091cf44448d4cace3675056a015f179f9cfa2989;hpb=52ba30d54960fe49799eeaea3802e35d5a86df44;p=distro-setup diff --git a/mount-latest-subvol b/mount-latest-subvol old mode 100755 new mode 100644 index 091cf44..a8ff06d --- a/mount-latest-subvol +++ b/mount-latest-subvol @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. - +# usage: mount-latest-subvol [[ $EUID == 0 ]] || exec sudo -E "$BASH_SOURCE" "$@" @@ -76,6 +76,7 @@ mnt() { ret=0 +##### begin setup fstab for subvols we care about ###### first_root_crypt=$(awk '$2 == "/" {print $1}' /etc/mtab) tu /etc/fstab </dev/null; then continue fi - binds=() - roots=($d) + ##### begin building up list of bind mounts ###### + binds=() # list of bind mounts + roots=($d) # list of bind mounts, plus the original mount while true; do new_roots=() for r in ${roots[@]}; do - # example + # eg. when r=/q/p, for lines like # /q/p /p none bind 0 0 + # output /p new_roots+=($(sed -rn "s#^$r/\S+\s+(\S+)\s+none\s+bind\s.*#\1#p" /etc/fstab)) done (( ${#new_roots} )) || break binds+=(${new_roots[@]}) roots=( ${new_roots[@]} ) done + ##### end building up list of bind mounts ###### + # if latest is already mounted, make sure binds are mounted and move on if e check-subvol-stale $d; then