Author: kib
Date: Mon Nov  3 14:08:08 2008
New Revision: 184590
URL: http://svn.freebsd.org/changeset/base/184590

Log:
  MFC r184074:
  Assert that v_holdcnt is non-zero before entering lockmgr in vn_lock and
  ffs_lock. This cannot catch situations where holdcnt is incremented not
  by curthread, but I think it is useful.
  
  Approved by:  re (kensmith)

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/kern/vfs_vnops.c
  stable/7/sys/ufs/ffs/ffs_vnops.c

Modified: stable/7/sys/kern/vfs_vnops.c
==============================================================================
--- stable/7/sys/kern/vfs_vnops.c       Mon Nov  3 10:39:35 2008        
(r184589)
+++ stable/7/sys/kern/vfs_vnops.c       Mon Nov  3 14:08:08 2008        
(r184590)
@@ -800,6 +800,10 @@ _vn_lock(struct vnode *vp, int flags, st
        do {
                if ((flags & LK_INTERLOCK) == 0)
                        VI_LOCK(vp);
+#ifdef DEBUG_VFS_LOCKS
+               KASSERT(vp->v_holdcnt != 0,
+                   ("vn_lock %p: zero hold count", vp));
+#endif
                if ((flags & LK_NOWAIT || (flags & LK_TYPE_MASK) == 0) &&
                    vp->v_iflag & VI_DOOMED) {
                        VI_UNLOCK(vp);

Modified: stable/7/sys/ufs/ffs/ffs_vnops.c
==============================================================================
--- stable/7/sys/ufs/ffs/ffs_vnops.c    Mon Nov  3 10:39:35 2008        
(r184589)
+++ stable/7/sys/ufs/ffs/ffs_vnops.c    Mon Nov  3 14:08:08 2008        
(r184590)
@@ -369,6 +369,10 @@ ffs_lock(ap)
                                VI_LOCK(vp);
                                flags |= LK_INTERLOCK;
                        }
+#ifdef DEBUG_VFS_LOCKS
+                       KASSERT(vp->v_holdcnt != 0,
+                           ("ffs_lock %p: zero hold count", vp));
+#endif
                        lkp = vp->v_vnlock;
                        result = _lockmgr(lkp, flags, VI_MTX(vp), ap->a_td, 
ap->a_file, ap->a_line);
                        if (lkp == vp->v_vnlock || result != 0)
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to