]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
FBSD: lock interlock around v_usecount accesses
authorBen Kaduk <kaduk@mit.edu>
Fri, 29 Oct 2010 16:01:04 +0000 (12:01 -0400)
committerDerrick Brashear <shadow@dementia.org>
Wed, 3 Nov 2010 10:58:27 +0000 (03:58 -0700)
The FreeBSD vnode locking strategy requires that the vnode
interlock be held for all accesses to v_usecount, such as those
used by our VREFCOUNT and VREFCOUNT_GT macros.  Conveniently,
a wrapper function is provided that takes the lock around its
access of the element, vrefcnt().  Use it for our macros.

Reviewed-on: http://gerrit.openafs.org/3195
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from commit b6367aa84b9d1c7529b6f3a12bbfeacc91384ffb)
Change-Id: I41ccb2b84347c4182d5b782faee176c9800d640a
Reviewed-on: http://gerrit.openafs.org/3234
Tested-by: BuildBot <buildbot@rampaginggeek.com>
src/afs/afs.h

index 1a2dc9de2efca12bcfd92bbf333892e7df98ce18..9561dde502a55a536f707462a26c39db66a8c69f 100644 (file)
@@ -656,6 +656,9 @@ struct SimpleLocks {
 
 #if defined(AFS_DARWIN80_ENV)
 #define VREFCOUNT_GT(v, y)    vnode_isinuse(AFSTOV(v), (y))
+#elif defined(AFS_FBSD_ENV)
+#define VREFCOUNT(v)           (vrefcnt(AFSTOV(v)))
+#define VREFCOUNT_GT(v, y)     (vrefcnt(AFSTOV(v)) > y)
 #elif defined(AFS_XBSD_ENV) || defined(AFS_DARWIN_ENV)
 #define VREFCOUNT(v)          ((v)->vrefCount)
 #define VREFCOUNT_GT(v, y)    (AFSTOV(v)->v_usecount > (y))