From: Jeffrey Altman Date: Mon, 21 Mar 2005 16:28:33 +0000 (+0000) Subject: STABLE14-windows-smb_vc_t-refcounts-20050321 X-Git-Tag: openafs-devel-1_3_80 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=1bcdd1cf529040786d225186e83802db42426c07;p=packages%2Fo%2Fopenafs.git STABLE14-windows-smb_vc_t-refcounts-20050321 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) --- diff --git a/src/WINNT/afsd/smb.c b/src/WINNT/afsd/smb.c index 7bdf60ead..22657df07 100644 --- a/src/WINNT/afsd/smb.c +++ b/src/WINNT/afsd/smb.c @@ -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); } }