DF-0145 / run0145.sh
#!/bin/sh # DF-0145 run: mount tmpfs w/ quota, populate RB-trees, measure, unmount (leak), measure. # Must run as root (mount/unmount); the RB-tree population is via unprivileged- # callable vquotactl "set limit uid". vfs.quota_enabled=1 must be set. set -u MNT=/mnt/df0145 N=${1:-200} echo "=== DF-0145 unmount leak test (vfs.quota_enabled=$(sysctl -n vfs.quota_enabled)) ===" mkdir -p "$MNT" echo "--- BEFORE mount: M_MOUNT ---" vmstat -m | awk '/mount|Mount/ || /^Type/' mount_tmpfs tmpfs "$MNT" 2>/dev/null || { echo "mount_tmpfs failed: $?" ; exit 1; } echo "mounted tmpfs on $MNT (vq_init ran -> RB trees ready, vfs_account enabled)" echo "--- populating $N uid chunks via vquotactl set-limit-uid ---" HERE=$(dirname "$0") if [ -x "$HERE/df0145_pop" ]; then "$HERE/df0145_pop" "$MNT" "$N" else echo "df0145_pop not built; skipping population" fi echo "--- AFTER populate / BEFORE unmount: M_MOUNT ---" vmstat -m | awk '/mount|Mount/ || /^Type/' echo "--- unmounting (VFS_ACDONE -> vq_done stub -> should leak) ---" umount "$MNT" echo "--- AFTER unmount: M_MOUNT (leaked if count did NOT drop back to ~baseline) ---" vmstat -m | awk '/mount|Mount/ || /^Type/' echo "=== done ===" |