add_assertions Now that v_usecount tracks valid references only add some "v_usecount == 1" assertions. diff -r cd6b1075f2e3 -r c8577cb16b57 sys/kern/vfs_vnode.c --- a/sys/kern/vfs_vnode.c Tue Dec 27 16:32:36 2016 +0100 +++ b/sys/kern/vfs_vnode.c Tue Dec 27 16:32:36 2016 +0100 @@ -304,6 +304,10 @@ if (node->vi_state != from) vnpanic(vp, "from is %s, expected %s at %s:%d\n", vstate_name(node->vi_state), vstate_name(from), func, line); + if ((from == VS_BLOCKED || to == VS_BLOCKED) && vp->v_usecount != 1) + vnpanic(vp, "%s to %s with usecount %d at %s:%d", + vstate_name(from), vstate_name(to), vp->v_usecount, + func, line); node->vi_state = to; if (from == VS_LOADING) @@ -877,6 +881,7 @@ mutex_enter(vp->v_interlock); VSTATE_CHANGE(vp, VS_BLOCKED, VS_ACTIVE); + KASSERT(vp->v_usecount == 1); vcache_reclaim(vp); vrelel(vp, 0);