summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMerlin Scholz <merlin@scholz.ruhr>2023-06-01 10:42:52 +0200
committerMerlin Scholz <merlin@scholz.ruhr>2023-06-01 10:42:52 +0200
commitdfc652cd06926f7c5a521411dd752883d463efe1 (patch)
tree60bb842ca1132a3e5902b22a29d137c74a88fc60
parent48481acd408271f2562775e3afb6a550c015dba8 (diff)
Fix v_interlock logging
-rw-r--r--sys/kern/vfs_cache.c2
-rw-r--r--sys/kern/vfs_vnode.c26
2 files changed, 18 insertions, 10 deletions
diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c
index 131fb466484..c94a7c8ab73 100644
--- a/sys/kern/vfs_cache.c
+++ b/sys/kern/vfs_cache.c
@@ -1034,7 +1034,7 @@ cache_cpu_init(struct cpu_info *ci)
size_t sz;
sz = roundup2(sizeof(*cpup), coherency_unit) + coherency_unit;
- cpup = kmem_zalloc(sz, KM_SLEEP);
+ cpup = kmem_zalloc(sz, KM_SLEEP); // TODO LOCKDOC
cpup = (void *)roundup2((uintptr_t)cpup, coherency_unit);
mutex_init(&cpup->cpu_lock, MUTEX_DEFAULT, IPL_NONE);
ci->ci_data.cpu_nch = cpup;
diff --git a/sys/kern/vfs_vnode.c b/sys/kern/vfs_vnode.c
index a0197813589..0648711e401 100644
--- a/sys/kern/vfs_vnode.c
+++ b/sys/kern/vfs_vnode.c
@@ -424,6 +424,11 @@ vnalloc_marker(struct mount *mp)
vp->v_type = VBAD;
vip->vi_state = VS_MARKER;
+#ifdef LOCKDOC
+ lockdoc_log_memory(1, "vnode_impl", vip, sizeof(*vip));
+ lockdoc_log_memory(1, "kmutex_t", vp->v_interlock, sizeof(*(vp->v_interlock)));
+#endif
+
return vp;
}
@@ -437,6 +442,12 @@ vnfree_marker(vnode_t *vp)
vip = VNODE_TO_VIMPL(vp);
KASSERT(vip->vi_state == VS_MARKER);
+
+#ifdef LOCKDOC
+ lockdoc_log_memory(0, "vnode_impl", vip, sizeof(*vip));
+ lockdoc_log_memory(0, "kmutex_t", vp->v_interlock, sizeof(*(vp->v_interlock)));
+#endif
+
uvm_obj_destroy(&vp->v_uobj, true);
pool_cache_put(vcache_pool, vip);
}
@@ -1077,11 +1088,6 @@ vcache_init(void)
vcache_hashsize = desiredvnodes;
vcache_hashtab = hashinit(desiredvnodes, HASH_SLIST, true,
&vcache_hashmask);
-#ifdef LOCKDOC
- // TODO
- //lockdoc_log_memory(1, "hashhead", vcache_hashtab, sizeof(*vcache_hashtab));
-#endif
-
}
static void
@@ -1164,6 +1170,7 @@ vcache_alloc(void)
#ifdef LOCKDOC
lockdoc_log_memory(1, "vnode_impl", vip, sizeof(*vip));
+ lockdoc_log_memory(1, "kmutex_t", vp->v_interlock, sizeof(*(vp->v_interlock)));
#endif
return vip;
@@ -1218,14 +1225,15 @@ vcache_free(vnode_impl_t *vip)
if (vp->v_type == VBLK || vp->v_type == VCHR)
spec_node_destroy(vp);
+#ifdef LOCKDOC
+ lockdoc_log_memory(0, "vnode_impl", vip, sizeof(*vip));
+ lockdoc_log_memory(0, "kmutex_t", vp->v_interlock, sizeof(*(vp->v_interlock)));
+#endif
+
rw_destroy(&vip->vi_lock);
uvm_obj_destroy(&vp->v_uobj, true);
cv_destroy(&vp->v_cv);
pool_cache_put(vcache_pool, vip);
-
-#ifdef LOCKDOC
- lockdoc_log_memory(0, "vnode_impl", vip, sizeof(*vip));
-#endif
}
/*