svn commit: r351471 - in head/sys: kern sys
Mateusz Guzik
mjg at FreeBSD.org
Sun Aug 25 05:11:44 UTC 2019
Author: mjg
Date: Sun Aug 25 05:11:43 2019
New Revision: 351471
URL: https://svnweb.freebsd.org/changeset/base/351471
Log:
vfs: add vholdnz (for already held vnodes)
Reviewed by: kib (previous version)
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D21358
Modified:
head/sys/kern/vfs_subr.c
head/sys/sys/vnode.h
Modified: head/sys/kern/vfs_subr.c
==============================================================================
--- head/sys/kern/vfs_subr.c Sun Aug 25 04:56:33 2019 (r351470)
+++ head/sys/kern/vfs_subr.c Sun Aug 25 05:11:43 2019 (r351471)
@@ -3018,6 +3018,19 @@ _vhold(struct vnode *vp, bool locked)
VI_UNLOCK(vp);
}
+void
+vholdnz(struct vnode *vp)
+{
+
+ CTR2(KTR_VFS, "%s: vp %p", __func__, vp);
+#ifdef INVARIANTS
+ int old = atomic_fetchadd_int(&vp->v_holdcnt, 1);
+ VNASSERT(old > 0, vp, ("%s: wrong hold count", __func__));
+#else
+ atomic_add_int(&vp->v_holdcnt, 1);
+#endif
+}
+
/*
* Drop the hold count of the vnode. If this is the last reference to
* the vnode we place it on the free list unless it has been vgone'd
Modified: head/sys/sys/vnode.h
==============================================================================
--- head/sys/sys/vnode.h Sun Aug 25 04:56:33 2019 (r351470)
+++ head/sys/sys/vnode.h Sun Aug 25 05:11:43 2019 (r351471)
@@ -657,6 +657,7 @@ void vgone(struct vnode *vp);
#define vhold(vp) _vhold((vp), 0)
#define vholdl(vp) _vhold((vp), 1)
void _vhold(struct vnode *, bool);
+void vholdnz(struct vnode *);
void vinactive(struct vnode *, struct thread *);
int vinvalbuf(struct vnode *vp, int save, int slpflag, int slptimeo);
int vtruncbuf(struct vnode *vp, off_t length, int blksize);
More information about the svn-src-all
mailing list