summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_subr.c
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2002-07-06 04:39:48 +0000
committerjeff <jeff@FreeBSD.org>2002-07-06 04:39:48 +0000
commit3bce786a77bacda7dff2776820c46922a5505154 (patch)
treef15de65f17dd6e84137752c7fdecc78de3c61b3a /sys/kern/vfs_subr.c
parente46b098b802ad19a3c592eac2df955c06780f6a6 (diff)
downloadFreeBSD-src-3bce786a77bacda7dff2776820c46922a5505154.zip
FreeBSD-src-3bce786a77bacda7dff2776820c46922a5505154.tar.gz
Add "vop_rename_pre" to do pre rename lock verification. This is enabled only
with DEBUG_VFS_LOCKS.
Diffstat (limited to 'sys/kern/vfs_subr.c')
-rw-r--r--sys/kern/vfs_subr.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 6662d01..fb7ba43 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -234,7 +234,26 @@ int (*softdep_process_worklist_hook)(struct mount *);
int vfs_badlock_print = 1;
/* Panic on violation */
int vfs_badlock_panic = 1;
-#endif
+
+void
+vop_rename_pre(void *ap)
+{
+ struct vop_rename_args *a = ap;
+
+ /* Check the source (from) */
+ if (a->a_tdvp != a->a_fdvp)
+ ASSERT_VOP_UNLOCKED(a->a_fdvp, "vop_rename: fdvp locked.\n");
+ if (a->a_tvp != a->a_fvp)
+ ASSERT_VOP_UNLOCKED(a->a_fvp, "vop_rename: tvp locked.\n");
+
+ /* Check the target */
+ if (a->a_tvp)
+ ASSERT_VOP_LOCKED(a->a_tvp, "vop_rename: tvp not locked.\n");
+
+ ASSERT_VOP_LOCKED(a->a_tdvp, "vop_rename: tdvp not locked.\n");
+}
+
+#endif /* DEBUG_VFS_LOCKS */
void
v_addpollinfo(struct vnode *vp)
OpenPOWER on IntegriCloud