]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE14-windows-smb_vc_t-refcounts-20050321 openafs-devel-1_3_80
authorJeffrey Altman <jaltman@secure-endpoints.com>
Mon, 21 Mar 2005 16:28:33 +0000 (16:28 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Mon, 21 Mar 2005 16:28:33 +0000 (16:28 +0000)
conditionalize the assertions on smb_vc_t refcounts as they are only
for debugging.  We know there is a problem but don't want to deal with
it for the 1.3.80 release.

added logging info for each hold and release.  perhaps that will provide
a clue in the future

====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================

When copying a packet we must increment the vcp refcounts

(cherry picked from commit 247a58de77004ec10c2e55451d99dd04bd982df4)

src/WINNT/afsd/smb.c

index 7bdf60eadf3afa1ae3e0e4e63dc17bb0b0ad84b8..22657df07efb8f4cb752151433c12ba984d25632 100644 (file)
@@ -850,25 +850,37 @@ int smb_IsStarMask(char *maskp)
 
 void smb_ReleaseVCNoLock(smb_vc_t *vcp)
 {
+    osi_Log2(smb_logp,"smb_ReleaseVCNoLock vcp %x ref %d",vcp, vcp->refCount);
+#ifdef DEBUG
     osi_assert(vcp->refCount-- != 0);
+#else
+    vcp->refCount--;
+#endif
 }       
 
 void smb_ReleaseVC(smb_vc_t *vcp)
 {
     lock_ObtainWrite(&smb_rctLock);
+    osi_Log2(smb_logp,"smb_ReleaseVC       vcp %x ref %d",vcp, vcp->refCount);
+#ifdef DEBUG
     osi_assert(vcp->refCount-- != 0);
+#else
+    vcp->refCount--;
+#endif
     lock_ReleaseWrite(&smb_rctLock);
 }       
 
 void smb_HoldVCNoLock(smb_vc_t *vcp)
 {
     vcp->refCount++;
+    osi_Log2(smb_logp,"smb_HoldVCNoLock vcp %x ref %d",vcp, vcp->refCount);
 }       
 
 void smb_HoldVC(smb_vc_t *vcp)
 {
     lock_ObtainWrite(&smb_rctLock);
     vcp->refCount++;
+    osi_Log2(smb_logp,"smb_HoldVC       vcp %x ref %d",vcp, vcp->refCount);
     lock_ReleaseWrite(&smb_rctLock);
 }       
 
@@ -1829,6 +1841,7 @@ smb_packet_t *smb_CopyPacket(smb_packet_t *pkt)
     tbp = GetPacket();
     memcpy(tbp, pkt, sizeof(smb_packet_t));
     tbp->wctp = tbp->data + ((unsigned int)pkt->wctp - (unsigned int)pkt->data);
+    smb_HoldVC(tbp->vcp);
     return tbp;
 }
 
@@ -8268,11 +8281,11 @@ void smb_Shutdown(void)
                 cm_scache_t * scp;
 
                 lock_ObtainMutex(&fidp->mx);
-                               if (fidp->scp != NULL) {
-                                       scp = fidp->scp;
-                                       fidp->scp = NULL;
-                       cm_ReleaseSCache(scp);
-                               }
+                if (fidp->scp != NULL) {
+                    scp = fidp->scp;
+                    fidp->scp = NULL;
+                    cm_ReleaseSCache(scp);
+                }
                 lock_ReleaseMutex(&fidp->mx);
             }
         }