From 8654ce02872d6d32a63860294c2935efff29efd2 Mon Sep 17 00:00:00 2001 From: Merlin Scholz Date: Wed, 31 May 2023 02:02:40 +0200 Subject: Fix logic errors in VFS subsys lockdoc memory loggin --- sys/kern/vfs_vnode.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/sys/kern/vfs_vnode.c b/sys/kern/vfs_vnode.c index 2ae94366266..4e8f504d33c 100644 --- a/sys/kern/vfs_vnode.c +++ b/sys/kern/vfs_vnode.c @@ -184,6 +184,11 @@ __KERNEL_RCSID(0, "$NetBSD: vfs_vnode.c,v 1.149 2023/02/24 11:02:27 riastradh Ex #include #ifdef LOCKDOC +/* + * LOCKDOC TODO: Right now, only completely free'd vnodes are being logged + * as free'd by FAIL*. Evaluate, whether recycled vnodes need to be handled + * as well. + */ #include #endif @@ -997,6 +1002,9 @@ out: } membar_acquire(); + // LOCKDOC TEST CODE + KASSERT(VSTATE_GET(vp) == VS_RECLAIMED); + if (VSTATE_GET(vp) == VS_RECLAIMED && vp->v_holdcnt == 0) { /* * It's clean so destroy it. It isn't referenced @@ -1427,7 +1435,7 @@ vcache_dealloc(vnode_impl_t *vip) /* * LOCKDOC: No log_memory here, since vrelel calls - * vcache_free or vcache_reclaim at some point + * vcache_free directly or defers the freeing */ vrelel(vp, 0, LK_NONE); } @@ -1955,10 +1963,6 @@ vcache_reclaim(vnode_t *vp) mutex_enter(vp->v_interlock); fstrans_done(mp); KASSERT((vp->v_iflag & VI_ONWORKLST) == 0); - -#ifdef LOCKDOC - lockdoc_log_memory(0, "vnode_impl", vip, sizeof(*vip)); -#endif } /* -- cgit