While troubleshooting a deadlock problem I compiled the kernel with
option VFSLCKDEBUG and found that the if statement in the assert macro
is missing braces. The includes seem to have changed since 5.6 as well
as it was missing the declaration for the panic function.


Index: kern/vfs_vops.c
===================================================================
RCS file: /cvs/src/sys/kern/vfs_vops.c,v
retrieving revision 1.9
diff -u -p -r1.9 vfs_vops.c
--- kern/vfs_vops.c     13 Aug 2013 05:52:24 -0000      1.9
+++ kern/vfs_vops.c     16 Jan 2015 23:30:59 -0000
@@ -48,10 +48,12 @@
 #include <sys/unistd.h>
 
 #ifdef VFSLCKDEBUG
+#include <sys/systm.h>
 #define ASSERT_VP_ISLOCKED(vp) do {                             \
-        if (((vp)->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp))   \
+        if (((vp)->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp)) { \
                 VOP_PRINT(vp);                                  \
                 panic("vp not locked");                         \
+        }                                                       \
 } while (0)
 #else
 #define ASSERT_VP_ISLOCKED(vp)  /* nothing */


-- 
Helg <xx...@msn.com>

Reply via email to