From d0f2422ba4035b6ce0a2eaf93e67f26aadba2c8a Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sat, 23 Feb 2008 21:14:19 +0000 Subject: [PATCH] DEVEL15-windows-buf-createlock-20080223 LICENSE MIT Do not leak a read lock on the bufCreateLock Add logging to cm_CheckNTOpen[Done] (cherry picked from commit 8bddb4892bb815076861507f8ae781ae2c3f3310) --- src/WINNT/afsd/cm_buf.c | 2 ++ src/WINNT/afsd/cm_vnodeops.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/WINNT/afsd/cm_buf.c b/src/WINNT/afsd/cm_buf.c index 120058390..bf2f43b3b 100644 --- a/src/WINNT/afsd/cm_buf.c +++ b/src/WINNT/afsd/cm_buf.c @@ -822,6 +822,7 @@ long buf_GetNewLocked(struct cm_scache *scp, osi_hyper_t *offsetp, cm_buf_t **bu */ bp->refCount--; lock_ReleaseWrite(&buf_globalLock); + lock_ReleaseRead(&scp->bufCreateLock); return CM_BUF_EXISTS; } } @@ -887,6 +888,7 @@ long buf_GetNewLocked(struct cm_scache *scp, osi_hyper_t *offsetp, cm_buf_t **bu */ buf_HoldLocked(bp); lock_ReleaseWrite(&buf_globalLock); + lock_ReleaseRead(&scp->bufCreateLock); /* grab required lock and clean; this only * starts the I/O. By the time we're back, diff --git a/src/WINNT/afsd/cm_vnodeops.c b/src/WINNT/afsd/cm_vnodeops.c index f13047ac3..6e0cb1b4c 100644 --- a/src/WINNT/afsd/cm_vnodeops.c +++ b/src/WINNT/afsd/cm_vnodeops.c @@ -441,12 +441,14 @@ long cm_CheckNTOpen(cm_scache_t *scp, unsigned int desiredAccess, _done: lock_ReleaseMutex(&scp->mx); + osi_Log3(afsd_logp,"cm_CheckNTOpen scp 0x%p ldp 0x%p code 0x%x", scp, *ldpp, code); return code; } extern long cm_CheckNTOpenDone(cm_scache_t *scp, cm_user_t *userp, cm_req_t *reqp, cm_lock_data_t ** ldpp) { + osi_Log2(afsd_logp,"cm_CheckNTOpenDone scp 0x%p ldp 0x%p", scp, *ldpp); if (*ldpp) { lock_ObtainMutex(&scp->mx); cm_Unlock(scp, (*ldpp)->sLockType, (*ldpp)->LOffset, (*ldpp)->LLength, -- 2.39.5