DF-2832 / race_stock2.sh
#!/bin/sh # DF2832 STOCK rerun (root, guest, STOCK kernel #0). # Both unpriv sides now actually execute (binaries in an exec-allowed path). ITER=${1:-10} IMG=/root/h2img MNT=/mnt/t B=/usr/local/df2832 rm -f $IMG dd if=/dev/zero of=$IMG bs=1m count=0 seek=512 >/dev/null 2>&1 vnconfig -u vn0 >/dev/null 2>&1 vnconfig -c -S 512m vn0 $IMG newfs_hammer2 /dev/vn0 >/dev/null 2>&1 mkdir -p $MNT sysctl vfs.hammer2.limit_dirty_chains=16 >/dev/null sysctl vfs.hammer2.limit_dirty_inodes=4 >/dev/null n=0 while [ $n -lt $ITER ]; do mount_hammer2 /dev/vn0 $MNT >/dev/null 2>&1 || { echo "[$n] mount failed"; n=$((n+1)); continue; } chmod 777 $MNT i=0 while [ $i -lt 3 ]; do su -m nobody -c "$B/dirty_writer /mnt/t/w$i.dat 60 >&/dev/null &"; i=$((i+1)); done i=0 while [ $i -lt 6 ]; do su -m nobody -c "$B/churn_open /mnt/t 60 >&/dev/null &"; i=$((i+1)); done echo "[$n] storm on: $(pgrep -u nobody | wc -l) procs" sleep 2 timeout 90 umount -f $MNT 2>&1 | head -1 n=$(( n + 1 )) done killall -u nobody churn_open dirty_writer >/dev/null 2>&1 sleep 1 vnconfig -u vn0 >/dev/null 2>&1 dmesg | grep -iE "panic|fault" | tail -3 echo "STOCK-RERUN-DONE ($ITER iterations)" |