svn commit: r184590 - in stable/7/sys: . kern ufs/ffs
Konstantin Belousov
kib at FreeBSD.org
Mon Nov 3 06:08:09 PST 2008
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)
More information about the svn-src-all
mailing list