#!/bin/sh
# DF-4760 v4 — indefinite holder (never closes during observation):
# is the free_vinum loop spinning the whole time (devbuf grows linearly)
# or does it stop early (plateau) with the tail-block being destroy_dev?
set -x
date
kldunload vinum 2>/dev/null; sleep 1
kldload vinum; sleep 1
sysctl -a 2>/dev/null | grep -E 'i8254.freq|hz' | head -5
vmstat -m | grep -i devbuf
/tmp/hold_daemon 300 > /tmp/holder4.log 2>&1 &
sleep 2
kldunload vinum &
UPID=$!
for i in 1 2 3 4 5 6; do
  sleep 5
  echo "== t=$((5*i))s of hang =="
  vmstat -m | grep -i devbuf
done
echo '== holder still open; kldunload state:'
ps -axww -o pid,stat,wchan,command | grep -E 'kldunload|hold_daemon'
echo '== killing holder now =='
kill -9 %1 2>/dev/null || pkill -9 hold_daemon
sleep 3
wait $UPID
echo "KLDUNLOAD_RC=$?"
kldstat | grep -i vinum || echo "module gone"
vmstat -m | grep -i devbuf
cat /tmp/holder4.log
date
