}
lock_ReleaseMutex(&cm_Freelance_Lock);
- if (scp == NULL)
+ if (scp == NULL)
scp = cm_GetNewSCache();
-
if (scp == NULL) {
osi_Log0(afsd_logp,"cm_GetSCache unable to obtain *new* scache entry");
lock_ReleaseWrite(&cm_scacheLock);
scp->dotdotFid.unique=1;
scp->dotdotFid.vnode=1;
scp->flags |= (CM_SCACHEFLAG_PURERO | CM_SCACHEFLAG_RO);
- scp->nextp=cm_data.scacheHashTablep[hash];
- cm_data.scacheHashTablep[hash]=scp;
- scp->flags |= CM_SCACHEFLAG_INHASH;
+ if (!(scp->flags & CM_SCACHEFLAG_INHASH)) {
+ scp->nextp=cm_data.scacheHashTablep[hash];
+ cm_data.scacheHashTablep[hash]=scp;
+ scp->flags |= CM_SCACHEFLAG_INHASH;
+ }
scp->refCount = 1;
osi_Log1(afsd_logp,"cm_GetSCache (freelance) sets refCount to 1 scp 0x%x", scp);
scp->fileType = fileType;