]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
windows-buf-createlock-20080223
authorJeffrey Altman <jaltman@secure-endpoints.com>
Sat, 23 Feb 2008 21:12:54 +0000 (21:12 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Sat, 23 Feb 2008 21:12:54 +0000 (21:12 +0000)
LICENSE MIT

Do not leak a read lock on the bufCreateLock

Add logging to cm_CheckNTOpen[Done]

src/WINNT/afsd/cm_buf.c
src/WINNT/afsd/cm_vnodeops.c

index ccc50986b435a560f4d8450ad37530b2c2ae1da9..a067b8be0ad051c5c8fbde1497140d25e84e58f8 100644 (file)
@@ -776,6 +776,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;
             }
         }
@@ -841,6 +842,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 6ed5354895585b4b4fa3780f117486f480f8bb0b..a0ec10343a7f639132b1b7bd64313b54668e1b93 100644 (file)
@@ -439,12 +439,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,