summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2002-07-05 05:51:25 +0000
committerjeff <jeff@FreeBSD.org>2002-07-05 05:51:25 +0000
commit27d14d46681c802942a9e8bceb27c468b22531f3 (patch)
tree49ce800c75b739540e01769ba8271738b0c3896c /sys
parent42fdc9105e5b2786955332d169778ed35a68883c (diff)
downloadFreeBSD-src-27d14d46681c802942a9e8bceb27c468b22531f3.zip
FreeBSD-src-27d14d46681c802942a9e8bceb27c468b22531f3.tar.gz
Cleanups for vnode lock debugging.
- Tell IS_LOCKING_VFS to ignore block and character devices. specfs vnodes aren't locked for io and they just generate lots of false positives. - Add newlines to the badlock prints.
Diffstat (limited to 'sys')
-rw-r--r--sys/sys/vnode.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h
index 70331a8..3c75429 100644
--- a/sys/sys/vnode.h
+++ b/sys/sys/vnode.h
@@ -453,13 +453,15 @@ extern int vfs_badlock_print;
/*
* [dfr] Kludge until I get around to fixing all the vfs locking.
*/
-#define IS_LOCKING_VFS(vp) ((vp)->v_tag == VT_UFS \
+#define IS_LOCKING_VFS(vp) ( ((vp)->v_tag == VT_UFS \
|| (vp)->v_tag == VT_NFS \
|| (vp)->v_tag == VT_LFS \
|| (vp)->v_tag == VT_ISOFS \
|| (vp)->v_tag == VT_MSDOSFS \
|| (vp)->v_tag == VT_DEVFS \
- || (vp)->v_tag == VT_UDF)
+ || (vp)->v_tag == VT_UDF) \
+ && ((vp)->v_type != VBLK \
+ && (vp)->v_type != VCHR) )
#define ASSERT_VOP_LOCKED(vp, str) \
do { \
@@ -467,7 +469,7 @@ do { \
\
if (_vp && IS_LOCKING_VFS(_vp) && !VOP_ISLOCKED(_vp, NULL)) { \
if (vfs_badlock_print) \
- printf("%s: %p is not locked but should be", \
+ printf("%s: %p is not locked but should be\n", \
str, _vp); \
if (vfs_badlock_panic) \
Debugger("Lock violation.\n"); \
@@ -483,7 +485,7 @@ do { \
lockstate = VOP_ISLOCKED(_vp, curthread); \
if (lockstate == LK_EXCLUSIVE) { \
if (vfs_badlock_print) \
- printf("%s: %p is locked but should not be", \
+ printf("%s: %p is locked but should not be\n", \
str, _vp); \
if (vfs_badlock_panic) \
Debugger("Lock Violation.\n"); \
OpenPOWER on IntegriCloud