diff options
| author | Merlin Scholz <merlin@scholz.ruhr> | 2023-07-19 19:56:04 +0200 |
|---|---|---|
| committer | Merlin Scholz <merlin@scholz.ruhr> | 2023-07-19 19:56:04 +0200 |
| commit | dd242573de8cb41e160a4ac9f742319cf4064e97 (patch) | |
| tree | ed922d19b6e8c3c11b2a5ecf9c5307fe5da95276 | |
| parent | b8485b96b8c366ac8d50f4d14560d6707abdfd21 (diff) | |
Adapt to NetBSD 10 by adding mount logging and v_interlock logging. Update Lockdoc Version
| -rw-r--r-- | sys/kern/vfs_mount.c | 19 | ||||
| -rw-r--r-- | sys/kern/vfs_vnode.c | 4 | ||||
| -rw-r--r-- | sys/sys/lockdoc.h | 2 |
3 files changed, 24 insertions, 1 deletions
diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c index cddc7de6cc8..2ee6fec9dd8 100644 --- a/sys/kern/vfs_mount.c +++ b/sys/kern/vfs_mount.c @@ -97,6 +97,10 @@ __KERNEL_RCSID(0, "$NetBSD: vfs_mount.c,v 1.102 2023/02/24 11:02:27 riastradh Ex #include <uvm/uvm_swap.h> +#ifdef LOCKDOC +#include <sys/lockdoc.h> +#endif + enum mountlist_type { ME_MOUNT, ME_MARKER @@ -164,6 +168,13 @@ vfs_mountalloc(struct vfsops *vfsops, vnode_t *vp) error = fstrans_mount(mp); KASSERT(error == 0); +#ifdef LOCKDOC + lockdoc_log_memory(1, "mount", mp, sizeof(*mp)); + lockdoc_log_memory(1, "kmutex_t", mp->mnt_renamelock, sizeof(*mp->mnt_renamelock)); + lockdoc_log_memory(1, "kmutex_t", mp->mnt_vnodelock, sizeof(*mp->mnt_vnodelock)); + lockdoc_log_memory(1, "kmutex_t", mp->mnt_updating, sizeof(*mp->mnt_updating)); +#endif + mutex_enter(&mountgen_lock); mp->mnt_gen = mountgen++; mutex_exit(&mountgen_lock); @@ -313,6 +324,14 @@ vfs_rele(struct mount *mp) * free the data structures. */ KASSERT(mp->mnt_refcnt == 0); + +#ifdef LOCKDOC + lockdoc_log_memory(0, "mount", mp, sizeof(*mp)); + lockdoc_log_memory(0, "kmutex_t", mp->mnt_renamelock, sizeof(*mp->mnt_renamelock)); + lockdoc_log_memory(0, "kmutex_t", mp->mnt_vnodelock, sizeof(*mp->mnt_vnodelock)); + lockdoc_log_memory(0, "kmutex_t", mp->mnt_updating, sizeof(*mp->mnt_updating)); +#endif + specificdata_fini(mount_specificdata_domain, &mp->mnt_specdataref); mutex_obj_free(mp->mnt_updating); mutex_obj_free(mp->mnt_renamelock); diff --git a/sys/kern/vfs_vnode.c b/sys/kern/vfs_vnode.c index 48def4ce900..df74282dff0 100644 --- a/sys/kern/vfs_vnode.c +++ b/sys/kern/vfs_vnode.c @@ -463,6 +463,7 @@ vnalloc_marker(struct mount *mp) #ifdef LOCKDOC lockdoc_log_memory(1, "vnode_impl", vip, sizeof(*vip)); lockdoc_log_memory(1, "kmutex_t", vp->v_interlock, sizeof(*(vp->v_interlock))); + lockdoc_log_memory(1, "kmutex_t", vp->v_uobj.vmobjlock, sizeof(*(vp->v_uobj.vmobjlock))); #endif return vp; @@ -482,6 +483,7 @@ vnfree_marker(vnode_t *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))); + lockdoc_log_memory(0, "kmutex_t", vp->v_uobj.vmobjlock, sizeof(*(vp->v_uobj.vmobjlock))); #endif mutex_obj_free(vp->v_interlock); @@ -1413,6 +1415,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))); + lockdoc_log_memory(1, "kmutex_t", vp->v_uobj.vmobjlock, sizeof(*(vp->v_uobj.vmobjlock))); #endif return vip; @@ -1470,6 +1473,7 @@ vcache_free(vnode_impl_t *vip) #ifdef LOCKDOC lockdoc_log_memory(0, "vnode_impl", vip, sizeof(*vip)); lockdoc_log_memory(0, "kmutex_t", vp->v_interlock, sizeof(*(vp->v_interlock))); + lockdoc_log_memory(0, "kmutex_t", vp->v_uobj.vmobjlock, sizeof(*(vp->v_uobj.vmobjlock))); #endif mutex_obj_free(vp->v_interlock); diff --git a/sys/sys/lockdoc.h b/sys/sys/lockdoc.h index 1cfe9c04a6e..0f706a48ce2 100644 --- a/sys/sys/lockdoc.h +++ b/sys/sys/lockdoc.h @@ -10,7 +10,7 @@ #include <sys/mutex.h> #include <sys/rwlock.h> -#define LOCKDOC_VERSION "ms-0.2" +#define LOCKDOC_VERSION "ms-vfs-0.2" #define LOCKDOC_DELIMITER "#" #define LOCKDOC_DELIMITER_CHAR '#' #define LOCKDOC_PING() lockdoc_outb('p',0x00e9); |
