From: Ben Kaduk Date: Fri, 29 Oct 2010 16:01:04 +0000 (-0400) Subject: FBSD: lock interlock around v_usecount accesses X-Git-Tag: upstream/1.8.0_pre1^2~4586 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=b6367aa84b9d1c7529b6f3a12bbfeacc91384ffb;p=packages%2Fo%2Fopenafs.git FBSD: lock interlock around v_usecount accesses 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. Change-Id: Ia88eb21046fe844a6adb830734dcae2f76ef2dc5 Reviewed-on: http://gerrit.openafs.org/3195 Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- diff --git a/src/afs/afs.h b/src/afs/afs.h index 1ee9ab533..5c2c832e1 100644 --- a/src/afs/afs.h +++ b/src/afs/afs.h @@ -670,6 +670,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))