DF-2997 / run_stocknod.sh
#!/bin/sh # DF-2997 run_stocknod.sh - STOCK-kernel proof that the "unmount: dangling # vnode" panic PRE-EXISTS the DF-2997 fix: drive the STOCK kernel's own # already-correct vput() error path in nfs_mknodrpc (truncated MKNOD reply # -> VNON 0-ref cached vnode), then force-unmount. No DF-2997 leak sites # involved at all. D=/root/df2997 cd $D echo "=== DF-2997 stock mknod-umount panic proof $(date) ===" uname -v pkill fakesrv 2>/dev/null || true sleep 1 (VERBOSE=1 ./fakesrv > $D/fakesrv3.log 2>&1 &) sleep 1 mkdir -p /mnt3 chmod 0777 /mnt3 mkdir -p /tmp/df2997 && cp probe /tmp/df2997/ mount_nfs -o port=2049,udp 127.0.0.1:/nd /mnt3 && echo MOUNT_ND_OK echo "NVN before: $(sysctl -n debug.numvnodes)" su -m maxx -c "/tmp/df2997/probe n /mnt3/n0" || true echo "NVN after: $(sysctl -n debug.numvnodes)" ps -ax -o pid,stat,wchan,comm | grep -E '[p]robe' || echo "no wedged probe (expected: no lock bug on this path)" sync echo "=== now the forced unmount (expected: panic unmount: dangling vnode) ===" umount -f /mnt3 echo "UMOUNT_SURVIVED (unexpected)" |