]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
DEVEL15-windows-buf-createlock-20080223
authorJeffrey Altman <jaltman@secure-endpoints.com>
Sat, 23 Feb 2008 21:14:19 +0000 (21:14 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Sat, 23 Feb 2008 21:14:19 +0000 (21:14 +0000)
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
src/WINNT/afsd/cm_vnodeops.c

index 120058390586081731472c448075e769a9339d2c..bf2f43b3bbe773d32b77dc9d0f30fea25517f704 100644 (file)
@@ -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,
index f13047ac307f81befe7565f0fd41ec5d8de25df3..6e0cb1b4c43e1aafd1d511bdd9e690d4dfa5d48a 100644 (file)
@@ -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,