DF-2832 / race_oneshot.sh
#!/bin/sh # DF2832 decisive single-shot race (root, guest). # Storm first, then ONE umount -f with parks hot; nohup so ssh death is fine. B=/usr/local/df2832 MNT=/mnt/t # clean slate killall -u nobody churn_open dirty_writer >/dev/null 2>&1 sleep 1 umount -f $MNT >/dev/null 2>&1 sleep 1 vnconfig -u vn0 >/dev/null 2>&1 sleep 1 dd if=/dev/zero of=/root/h2img bs=1m count=0 seek=512 >/dev/null 2>&1 vnconfig -c -S 512m vn0 /root/h2img newfs_hammer2 /dev/vn0 >/dev/null 2>&1 mount_hammer2 /dev/vn0 $MNT chmod 777 $MNT sysctl vfs.hammer2.limit_dirty_chains=16 >/dev/null sysctl vfs.hammer2.limit_dirty_inodes=4 >/dev/null echo "=== storm starting (churners only, fd-less) ===" i=0 while [ $i -lt 12 ]; do su -m nobody -c "$B/churn_open /mnt/t 900 >&/dev/null &" i=$(( i + 1 )) done sleep 4 echo "starts before umount: $(sysctl -n debug.df2832_starts)" echo "=== umount -f NOW ===" date umount -f $MNT 2>&1 | head -2 echo "umount rc=$? $(date)" killall -u nobody churn_open >/dev/null 2>&1 echo "=== result ===" sysctl debug.df2832_starts debug.df2832_hits dmesg | grep "DF2832: HIT" | tail -20 dmesg | grep "thr_stop FREE" | tail -2 vnconfig -u vn0 >/dev/null 2>&1 echo "ONESHOT-DONE" |