Inspired by MPASS.
Can be reimplemented to just use VNASSERT. Imo VNASSERT should be augmented to print stringified assertion + file + line + func instead of just "VNASSERT failed". But then VNPASS would almost literally repeatVNPASS repeats the first line for panicstr, I don't know if that's a problem apart from looking weird.
Sample output:
```
VNASSERT failed: vp->v_holdcnt == 1234 not true at /usr/src/sys/kern/vfs_subr.c:3148 (vputx
0xfffff800081b51e8: type VNON)
0xfffff80003ba71e8: type VDIR
usecount 17, writecount 0, refcount 1 mountedhere 0
flags (VV_ROOT)
lock type udevfs: EXCL by thread 0xfffff80003ee027d96e0 (pid 481, mountkernel, tid 100107002)
nlink=0, effnlink=0, size=0, extsize 0panic: foo test
```
generation=f2bc93f3, uid=0, gid=0, flags=0x0VNASSERT failed: vp->v_holdcnt == 1234 not true at /usr/src/sys/kern/vfs_subr.c:3148 (vputx
ino 161326, on dev ufsid/5d6afa2a5db9ebf3)
panic: condition vp->v_mflag & 8 not met at /usr/src/sys/kern/vfs_subr.c:3080 (vlazy)0xfffff80003ba51e8: type VDIR
usecount 7, writecount 0, refcount 1 mountedhere 0
flags (VV_ROOT)
lock type devfs: EXCL by thread 0xfffff800027d96e0 (pid 1, kernel, tid 100002)
panic: condition vp->v_holdcnt == 1234 not met at /usr/src/sys/kern/vfs_subr.c:3148 (vputx
)
```