summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/kern/vfs_subr.c16
-rw-r--r--sys/sys/vnode.h1
2 files changed, 17 insertions, 0 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index fb7ba43c21f7..882fc391d557 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -253,6 +253,22 @@ vop_rename_pre(void *ap)
ASSERT_VOP_LOCKED(a->a_tdvp, "vop_rename: tdvp not locked.\n");
}
+void
+vop_strategy_pre(void *ap)
+{
+ struct vop_strategy_args *a = ap;
+ int status;
+
+ status = lockstatus(&a->a_bp->b_lock, curthread);
+
+ if (status != LK_SHARED && status != LK_EXCLUSIVE) {
+ if (vfs_badlock_print)
+ printf("VOP_STRATEGY: bp is not locked but should be.\n");
+ if (vfs_badlock_panic)
+ Debugger("Lock violation.\n");
+ }
+}
+
#endif /* DEBUG_VFS_LOCKS */
void
diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h
index 4e315d70fa6c..71e9236390c9 100644
--- a/sys/sys/vnode.h
+++ b/sys/sys/vnode.h
@@ -524,6 +524,7 @@ do { \
} while (0)
void vop_rename_pre(void *a);
+void vop_strategy_pre(void *a);
#else