return NULL;
}
+#ifdef DEBUG_REFCOUNT
+long cm_GetSCacheDbg(cm_fid_t *fidp, cm_scache_t **outScpp, cm_user_t *userp,
+ cm_req_t *reqp, char * file, long line)
+#else
long cm_GetSCache(cm_fid_t *fidp, cm_scache_t **outScpp, cm_user_t *userp,
cm_req_t *reqp)
+#endif
{
long hash;
cm_scache_t *scp;
lock_ObtainWrite(&cm_scacheLock);
for (scp=cm_data.hashTablep[hash]; scp; scp=scp->nextp) {
if (cm_FidCmp(fidp, &scp->fid) == 0) {
+#ifdef DEBUG_REFCOUNT
+ afsi_log("%s:%d cm_GetSCache (1) outScpp 0x%p ref %d", file, line, scp, scp->refCount);
+ osi_Log1(afsd_logp,"cm_GetSCache (1) outScpp 0x%p", scp);
+#endif
cm_HoldSCacheNoLock(scp);
*outScpp = scp;
cm_AdjustLRU(scp);
#endif
*outScpp = scp;
lock_ReleaseWrite(&cm_scacheLock);
+#ifdef DEBUG_REFCOUNT
+ afsi_log("%s:%d cm_GetSCache (2) outScpp 0x%p ref %d", file, line, scp, scp->refCount);
+ osi_Log1(afsd_logp,"cm_GetSCache (2) outScpp 0x%p", scp);
+#endif
return 0;
}
// end of yj code
*/
for (scp=cm_data.hashTablep[hash]; scp; scp=scp->nextp) {
if (cm_FidCmp(fidp, &scp->fid) == 0) {
+#ifdef DEBUG_REFCOUNT
+ afsi_log("%s:%d cm_GetSCache (3) outScpp 0x%p ref %d", file, line, scp, scp->refCount);
+ osi_Log1(afsd_logp,"cm_GetSCache (3) outScpp 0x%p", scp);
+#endif
cm_HoldSCacheNoLock(scp);
osi_assert(scp->volp == volp);
cm_AdjustLRU(scp);
/* now we have a held scache entry; just return it */
*outScpp = scp;
+#ifdef DEBUG_REFCOUNT
+ afsi_log("%s:%d cm_GetSCache (4) outScpp 0x%p ref %d", file, line, scp, scp->refCount);
+ osi_Log1(afsd_logp,"cm_GetSCache (4) outScpp 0x%p", scp);
+#endif
return 0;
}
parent_fid.unique = scp->parentUnique;
if (cm_FidCmp(&scp->fid, &parent_fid)) {
- for (i=0; i<cm_data.hashTableSize; i++) {
- for (pscp = cm_data.hashTablep[i]; pscp; pscp = pscp->nextp) {
- if (!cm_FidCmp(&pscp->fid, &parent_fid)) {
- cm_HoldSCacheNoLock(pscp);
- break;
- }
+ i = CM_SCACHE_HASH(&parent_fid);
+ for (pscp = cm_data.hashTablep[i]; pscp; pscp = pscp->nextp) {
+ if (!cm_FidCmp(&pscp->fid, &parent_fid)) {
+ cm_HoldSCacheNoLock(pscp);
+ break;
}
}
}
+
lock_ReleaseRead(&cm_scacheLock);
return pscp;
afsFidp->Unique = fidp->unique;
}
+#ifdef DEBUG_REFCOUNT
+void cm_HoldSCacheNoLockDbg(cm_scache_t *scp, char * file, long line)
+#else
void cm_HoldSCacheNoLock(cm_scache_t *scp)
+#endif
{
osi_assert(scp != 0);
scp->refCount++;
#ifdef DEBUG_REFCOUNT
osi_Log2(afsd_logp,"cm_HoldSCacheNoLock scp 0x%p ref %d",scp, scp->refCount);
+ afsi_log("%s:%d cm_HoldSCacheNoLock scp 0x%p, ref %d", file, line, scp, scp->refCount);
#endif
}
+#ifdef DEBUG_REFCOUNT
+void cm_HoldSCacheDbg(cm_scache_t *scp, char * file, long line)
+#else
void cm_HoldSCache(cm_scache_t *scp)
+#endif
{
osi_assert(scp != 0);
lock_ObtainWrite(&cm_scacheLock);
scp->refCount++;
#ifdef DEBUG_REFCOUNT
osi_Log2(afsd_logp,"cm_HoldSCache scp 0x%p ref %d",scp, scp->refCount);
+ afsi_log("%s:%d cm_HoldSCache scp 0x%p ref %d", file, line, scp, scp->refCount);
#endif
lock_ReleaseWrite(&cm_scacheLock);
}
+#ifdef DEBUG_REFCOUNT
+void cm_ReleaseSCacheNoLockDbg(cm_scache_t *scp, char * file, long line)
+#else
void cm_ReleaseSCacheNoLock(cm_scache_t *scp)
+#endif
{
osi_assert(scp != NULL);
if (scp->refCount == 0)
osi_assert(scp->refCount-- >= 0);
#ifdef DEBUG_REFCOUNT
osi_Log2(afsd_logp,"cm_ReleaseSCacheNoLock scp 0x%p ref %d",scp,scp->refCount);
+ afsi_log("%s:%d cm_ReleaseSCacheNoLock scp 0x%p ref %d", file, line, scp, scp->refCount);
#endif
}
+#ifdef DEBUG_REFCOUNT
+void cm_ReleaseSCacheDbg(cm_scache_t *scp, char * file, long line)
+#else
void cm_ReleaseSCache(cm_scache_t *scp)
+#endif
{
osi_assert(scp != NULL);
lock_ObtainWrite(&cm_scacheLock);
scp->refCount--;
#ifdef DEBUG_REFCOUNT
osi_Log2(afsd_logp,"cm_ReleaseSCache scp 0x%p ref %d",scp,scp->refCount);
+ afsi_log("%s:%d cm_ReleaseSCache scp 0x%p ref %d", file, line, scp, scp->refCount);
#endif
lock_ReleaseWrite(&cm_scacheLock);
}