From 7d7301f67dfdc59cbaf56e9d2c85ebd03dcc2b95 Mon Sep 17 00:00:00 2001 From: "Andreas B. Mundt" Date: Sat, 2 Sep 2023 16:06:15 +0200 Subject: [PATCH] Try umounting multiple times. --- roles/lmn_vm/files/pam-umount.sh | 45 +++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/roles/lmn_vm/files/pam-umount.sh b/roles/lmn_vm/files/pam-umount.sh index d6a33df..1f02ac5 100644 --- a/roles/lmn_vm/files/pam-umount.sh +++ b/roles/lmn_vm/files/pam-umount.sh @@ -4,25 +4,35 @@ set -eu -LANG=C usr="$1" uid="$2" mtp="$3" -lmuh="/lmn/media/$usr/home" -lmus="/lmn/media/$usr/share" +shutdownVMs(){ + local VMs VM + VMs="$(machinectl list --no-legend)" + if [[ -n "$VMs" ]] ; then + for VM in $VMs ; do + machinectl poweroff "$VM{VM%% *}" || true + done + sleep 3 + fi + ## Check again: + VMs="$(machinectl list --no-legend)" + if [[ -n "$VMs" ]] ; then + sleep 3 + for VM in $VMs ; do + machinectl terminate "${VM%% *}" || true + done + fi + #killall -9 virtiofsd +} -for VMname in $(sudo -u $usr XDG_RUNTIME_DIR="/run/user/$uid" \ - virsh list --state-running | grep running | awk '{print $2}'); do - sudo -u $usr XDG_RUNTIME_DIR="/run/user/$uid" virsh destroy $VMname || true - sleep 1 -done -#killall -9 virtiofsd +unbindmnt(){ + local lmuh="/lmn/media/$usr/home" + local lmus="/lmn/media/$usr/share" + local N=0 mh=true ms=true -if [[ "$mtp" =~ "/srv/samba/schools" ]] ; then - N=0 - mh=true - ms=true mountpoint -q $lmuh || mh=false mountpoint -q $lmus || ms=false while [[ $N -lt 10 ]] && ([[ $mh = true ]] || [[ $ms = true ]]) ; do @@ -36,5 +46,14 @@ if [[ "$mtp" =~ "/srv/samba/schools" ]] ; then sleep 1 done systemd-cat echo "Tried $N umount(s)." +} + +###################### + +if [[ "$mtp" =~ "/srv/samba/schools" ]] ; then + shutdownVMs + unbindmnt fi + +## Just umount: exec umount "$mtp"