X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=mount-latest-subvol;h=d7be613c763d122d0259b5a434ca4a161f599627;hb=f7a2fe0e56e14b55818245a2e3a2eb68f1cd23de;hp=b4bec8efe51c1aec7101d4aa78b84a219b8e1bec;hpb=3a5055dce8796a1946d9f75d8c74605eb73d19df;p=distro-setup diff --git a/mount-latest-subvol b/mount-latest-subvol index b4bec8e..d7be613 100644 --- a/mount-latest-subvol +++ b/mount-latest-subvol @@ -81,6 +81,31 @@ fstab() { tu /etc/fstab <<<"$l" done } +kill-dir() { + found_pids=false + sig=${1:-TERM} + if pids=$(timeout 4 lsof -t $dir); then + found_pids=true + timeout 4 lsof -w $dir + kill -$sig $pids + fi + # fuser will find open sockets that lsof won't, for example from gpg-agent. + # note: -v shows kernel processes, which then doesn't return true when we want + if timeout 4 fuser -m $dir &>/dev/null; then + found_pids=true + fuser -$sig -mvk $dir + fi + if $found_pids; then + sleep .5 + return 0 + fi + return 1 +} + +force=false +if [[ $1 == -f ]]; then + force=true +fi ret=0 @@ -92,10 +117,14 @@ EOF shopt -s nullglob +# ssh and probably some other things care about parent directory +# ownership, and ssh doesn\'t allow any group writable parent +# directories, so we are forced to use a directory structure similar +# to home directories f=(/mnt/root/btrbk/q.*) if [[ -e $f ]]; then fstab <