DF-3178 / run_wiring.sh
#!/bin/sh # DF-3178 wiring-variant run — mount the census-lie image (su_btotal = # 0x0FFFC000, dbnum = 0x3FFF) as root and measure: # * kernel heap wired by the mount (vmstat -m, M_HPFSMNT rows) # * free-page delta (vm.stats.vm.v_free_count) # * the statfs lie (df: ~128 GiB total on a 1.25 MiB image) # * mount wall-time, then unmount + verify everything is released # A second mount/unmount cycle proves repeatability. set - cd "$(dirname "$0")" CFG=../../../dfbsd-qemu/config SSH="ssh -F $CFG -o ConnectTimeout=8 -o BatchMode=yes" SCP="scp -F $CFG -o ConnectTimeout=8 -o BatchMode=yes" python3 craft_img.py df3178w.img wiring $SCP df3178w.img dfbsd:/tmp/df3178.img $SCP mount_ro.c dfbsd:/tmp/ $SSH dfbsd 'sh -c "[ -x /root/mount_ro ] || cc -O2 -I/usr/src/sys -o /root/mount_ro /tmp/mount_ro.c"' cat > /tmp/df3178_go.sh <<'GOEOF' #!/bin/sh echo "== pre-mount state ==" vmstat -m | grep -i hpfs || echo "(no HPFS malloc rows yet)" sysctl vm.stats.vm.v_free_count echo echo "== mount (root, RO) ==" mkdir -p /tmp/hpfsmp vnconfig -u vn0 2>/dev/null vnconfig vn0 /tmp/df3178.img || exit 1 START=$(date +%s) /root/mount_ro /dev/vn0 /tmp/hpfsmp || { echo MOUNT_FAILED; exit 1; } END=$(date +%s) echo "MOUNT_RC=0 wall=$((END-START))s" echo echo "== post-mount state ==" vmstat -m | grep -i hpfs sysctl vm.stats.vm.v_free_count echo echo "== the statfs lie ==" df /tmp/hpfsmp df -k /tmp/hpfsmp echo echo "== image is really only ==" ls -l /tmp/df3178.img diskinfo -v /dev/vn0 2>/dev/null | head -8 || true echo echo "== unmount + verify release ==" sync umount /tmp/hpfsmp && echo UMOUNT_OK sleep 1 vmstat -m | grep -i hpfs || echo "(HPFS malloc rows gone)" sysctl vm.stats.vm.v_free_count vnconfig -u vn0 && echo VN_RELEASED GOEOF $SCP /tmp/df3178_go.sh dfbsd:/tmp/ $SSH dfbsd "sh /tmp/df3178_go.sh" echo "RUN1_EXIT=$?" echo "=== second cycle (repeatability) ===" $SSH dfbsd 'sh -c "vnconfig vn0 /tmp/df3178.img && /root/mount_ro /dev/vn0 /tmp/hpfsmp && vmstat -m | grep -i hpfs && df -k /tmp/hpfsmp && umount /tmp/hpfsmp && vnconfig -u vn0 && echo CYCLE2_OK"' echo "RUN2_EXIT=$?" |