From: Nickolai Zeldovich Date: Sat, 29 Dec 2001 23:15:19 +0000 (+0000) Subject: STABLE12-nbobtainwritelock-fix-precedence-problem-20011229 X-Git-Tag: openafs-stable-1_2_3~55 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=207c087d993cb7013ccfcefc21e2316531dced7a;p=packages%2Fo%2Fopenafs.git STABLE12-nbobtainwritelock-fix-precedence-problem-20011229 NBObtainWriteLock always returned 0 due to precedence problem. Also add NBObtainSharedLock --- diff --git a/src/afs/lock.h b/src/afs/lock.h index 343776412..33565093f 100644 --- a/src/afs/lock.h +++ b/src/afs/lock.h @@ -175,7 +175,7 @@ extern int afs_trclock; (lock)->src_indicator = src;\ ENDMAC -#define NBObtainWriteLock(lock, src) (((lock)->excl_locked || (lock)->readers_reading) ? EWOULDBLOCK : ((lock) -> excl_locked = WRITE_LOCK), ((lock)->pid_writer = MyPidxx), ((lock)->src_indicator = src), 0) +#define NBObtainWriteLock(lock, src) (((lock)->excl_locked || (lock)->readers_reading) ? EWOULDBLOCK : (((lock) -> excl_locked = WRITE_LOCK), ((lock)->pid_writer = MyPidxx), ((lock)->src_indicator = src), 0)) #define ObtainSharedLock(lock, src)\ BEGINMAC \ @@ -188,6 +188,8 @@ extern int afs_trclock; (lock)->src_indicator = src;\ ENDMAC +#define NBObtainSharedLock(lock, src) (((lock)->excl_locked) ? EWOULDBLOCK : (((lock) -> excl_locked = SHARED_LOCK), ((lock)->pid_writer = MyPidxx), ((lock)->src_indicator = src), 0)) + #define UpgradeSToWLock(lock, src)\ BEGINMAC \ /* if (afs_trclock) {icl_Trace2(cm_iclSetp, CM_TRACE_LOCKOBTAIN, ICL_TYPE_POINTER, (long)lock, ICL_TYPE_LONG, (long)BOOSTED_LOCK);} */ \ @@ -274,7 +276,7 @@ extern int afs_trclock; Afs_Lock_Obtain(lock, WRITE_LOCK); \ ENDMAC -#define NBObtainWriteLock(lock, src) (((lock)->excl_locked || (lock)->readers_reading) ? EWOULDBLOCK : ((lock) -> excl_locked = WRITE_LOCK), 0) +#define NBObtainWriteLock(lock, src) (((lock)->excl_locked || (lock)->readers_reading) ? EWOULDBLOCK : (((lock) -> excl_locked = WRITE_LOCK), 0)) #define ObtainSharedLock(lock, src)\ BEGINMAC \ @@ -285,6 +287,8 @@ extern int afs_trclock; Afs_Lock_Obtain(lock, SHARED_LOCK); \ ENDMAC +#define NBObtainSharedLock(lock, src) (((lock)->excl_locked) ? EWOULDBLOCK : (((lock) -> excl_locked = SHARED_LOCK), 0)) + #define UpgradeSToWLock(lock, src)\ BEGINMAC \ /* if (afs_trclock) {icl_Trace2(cm_iclSetp, CM_TRACE_LOCKOBTAIN, ICL_TYPE_POINTER, (long)lock, ICL_TYPE_LONG, (long)BOOSTED_LOCK);} */ \