From: Jeffrey Altman Date: Sat, 23 Feb 2008 21:14:19 +0000 (+0000) Subject: DEVEL15-windows-buf-createlock-20080223 X-Git-Tag: openafs-devel-1_5_33~16 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=d0f2422ba4035b6ce0a2eaf93e67f26aadba2c8a;p=packages%2Fo%2Fopenafs.git 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) --- 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,