From 0d4b01ba892240979dcf8d0cbf98e618607d97cd Mon Sep 17 00:00:00 2001 From: Jim Rees Date: Sun, 15 May 2005 21:54:50 +0000 Subject: [PATCH] fix-vrefcount-20050513 fix VREFCOUNT macro for XBSD ==================== This delta was composed from multiple commits as part of the CVS->Git migration. The checkin message with each commit was inconsistent. The following are the additional commit messages. ==================== and everything else. --- src/afs/OBSD/osi_machdep.h | 2 +- src/afs/VNOPS/afs_vnop_remove.c | 9 ++++----- src/afs/afs.h | 8 ++++---- src/afs/afs_osi.h | 4 +--- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/afs/OBSD/osi_machdep.h b/src/afs/OBSD/osi_machdep.h index 43a118b6c..3bd3af520 100644 --- a/src/afs/OBSD/osi_machdep.h +++ b/src/afs/OBSD/osi_machdep.h @@ -63,7 +63,7 @@ extern struct simplelock afs_rxglobal_lock; #define AFS_PROC struct proc #define AFS_UCRED ucred #define afs_suser(x) afs_osi_suser(osi_curcred()) -#define getpid() curproc +#define getpid() (curproc->p_pid) #define osi_curcred() (curproc->p_cred->pc_ucred) #define osi_curproc() curproc #define p_rcred p_ucred diff --git a/src/afs/VNOPS/afs_vnop_remove.c b/src/afs/VNOPS/afs_vnop_remove.c index d78554c8a..a00b80eb2 100644 --- a/src/afs/VNOPS/afs_vnop_remove.c +++ b/src/afs/VNOPS/afs_vnop_remove.c @@ -377,13 +377,12 @@ afs_remove(OSI_VC_ARG(adp), aname, acred) Ttvcr = VREFCOUNT(tvc); #endif #ifdef AFS_AIX_ENV - if (tvc && (VREFCOUNT(tvc) > 2) && tvc->opens > 0 - && !(tvc->states & CUnlinked)) + if (tvc && VREFCOUNT_GT(tvc, 2) && tvc->opens > 0 + && !(tvc->states & CUnlinked)) { #else - if (tvc && (VREFCOUNT_GT(tvc), 1) && tvc->opens > 0 - && !(tvc->states & CUnlinked)) + if (tvc && VREFCOUNT_GT(tvc, 1) && tvc->opens > 0 + && !(tvc->states & CUnlinked)) { #endif - { char *unlname = afs_newname(); ReleaseWriteLock(&adp->lock); diff --git a/src/afs/afs.h b/src/afs/afs.h index b0d8c2dc5..10ddf6003 100644 --- a/src/afs/afs.h +++ b/src/afs/afs.h @@ -557,11 +557,11 @@ struct SimpleLocks { #define vrefCount v.v_count #endif /* AFS_XBSD_ENV */ -/* VREFCOUNT_GT works on vnodes, not vcaches. maybe this is bad? */ #if defined(AFS_DARWIN80_ENV) -#define VREFCOUNT_GT(v, y) vnode_isinuse(AFSTOV(v), y) +#define VREFCOUNT_GT(v, y) vnode_isinuse(AFSTOV(v), (y)) #elif defined(AFS_XBSD_ENV) || defined(AFS_DARWIN_ENV) -#define VREFCOUNT_GT(v, y) (AFSTOV(v)->v_usecount>y?1:0) +#define VREFCOUNT(v) ((v)->vrefCount) +#define VREFCOUNT_GT(v, y) (AFSTOV(v)->v_usecount > (y)) #elif defined(AFS_LINUX24_ENV) #define VREFCOUNT(v) atomic_read(&((vnode_t *) v)->v_count) #define VREFCOUNT_GT(v, y) ((atomic_read(&((vnode_t *) v)->v_count)>y)?1:0) @@ -570,7 +570,7 @@ struct SimpleLocks { #define VREFCOUNT_INC(v) atomic_inc(&((vnode_t *) v)->v_count) #else #define VREFCOUNT(v) ((v)->vrefCount) -#define VREFCOUNT_GT(v,y) ((v).v_count>y?1:0) +#define VREFCOUNT_GT(v,y) ((v)->vrefCount > (y)) #define VREFCOUNT_SET(v, c) (v)->vrefCount = c; #define VREFCOUNT_DEC(v) (v)->vrefCount--; #define VREFCOUNT_INC(v) (v)->vrefCount++; diff --git a/src/afs/afs_osi.h b/src/afs/afs_osi.h index b2ba0cc45..ed3919a63 100644 --- a/src/afs/afs_osi.h +++ b/src/afs/afs_osi.h @@ -125,8 +125,7 @@ struct afs_osi_WaitHandle { */ #if defined(AFS_DARWIN80_ENV) #define vType(vc) vnode_vtype(AFSTOV(vc)) -#else -#if defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV) +#elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) #define vSetVfsp(vc, vfsp) AFSTOV(vc)->v_mount = (vfsp) #define vSetType(vc, type) AFSTOV(vc)->v_type = (type) #define vType(vc) AFSTOV(vc)->v_type @@ -141,7 +140,6 @@ extern struct vnodeops *afs_ops; #define IsAfsVnode(v) ((v)->v_op == afs_ops) #define SetAfsVnode(v) (v)->v_op = afs_ops #endif -#endif #ifdef AFS_SGI65_ENV #define gop_lookupname(fnamep,segflg,followlink,compvpp) \ -- 2.39.5