diff --git a/scripts/stop-mhvtl.sh b/scripts/stop-mhvtl.sh index dfd2556..c26834e 100755 --- a/scripts/stop-mhvtl.sh +++ b/scripts/stop-mhvtl.sh @@ -2,13 +2,30 @@ echo "Stopping mhvtl Virtual Tape Library..." +CONFIG_FILE="/etc/mhvtl/device.conf" + +# First try graceful shutdown using vtlcmd for each configured Drive +if [ -f "$CONFIG_FILE" ] && command -v vtlcmd >/dev/null 2>&1; then + DRIVES=$(grep "^Drive:" "$CONFIG_FILE" | awk '{print $2}' | sort -u) + for d in $DRIVES; do + if pgrep -f "vtltape.*-q $d" >/dev/null; then + echo "Attempting graceful shutdown of vtltape (queue $d)..." + /usr/bin/vtlcmd $d exit || true + fi + done + # Give processes a few seconds to exit cleanly + sleep 3 +fi + +# Fallback: ensure vtllibrary and any remaining vtltape processes are killed killall vtllibrary 2>/dev/null || true killall vtltape 2>/dev/null || true -sleep 2 +sleep 1 rm -f /var/lock/mhvtl/mhvtl* 2>/dev/null || true +# Try to remove kernel module if present rmmod mhvtl 2>/dev/null || true echo "mhvtl stopped successfully"