diff options
| author | Merlin Scholz <merlin@scholz.ruhr> | 2023-05-31 02:02:40 +0200 |
|---|---|---|
| committer | Merlin Scholz <merlin@scholz.ruhr> | 2023-07-19 19:38:47 +0200 |
| commit | 8654ce02872d6d32a63860294c2935efff29efd2 (patch) | |
| tree | d81d078ce21d730fc76fc69ec157574d525c5e01 | |
| parent | 9197215d550315fea0dae1ab7369800b5d097761 (diff) | |
Fix logic errors in VFS subsys lockdoc memory loggin
| -rw-r--r-- | sys/kern/vfs_vnode.c | 14 |
1 files 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 <uvm/uvm_stat.h> #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 <sys/lockdoc.h> #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 } /* |
