bp->redirLastAccess = 0;
bp->redirReleaseRequested = 0;
buf_ReleaseLocked(bp, TRUE);
+ InterlockedDecrement(&cm_data.buf_usedCount);
}
bp++;
}
bp->redirLastAccess = 0;
bp->redirReleaseRequested = 0;
buf_ReleaseLocked(bp, TRUE);
+ InterlockedDecrement(&cm_data.buf_usedCount);
}
lock_ReleaseWrite(&buf_globalLock);
}
bp->error = code;
bp->dataVersion = CM_BUF_VERSION_BAD;
bp->dirtyCounter++;
+ InterlockedDecrement(&cm_data.buf_usedCount);
}
while ((bp->flags & CM_BUF_DIRTY) == CM_BUF_DIRTY) {
bp->error = code;
bp->dataVersion = CM_BUF_VERSION_BAD;
bp->dirtyCounter++;
+ InterlockedDecrement(&cm_data.buf_usedCount);
break;
}
bufp->dirty_length = 0;
bufp->dataVersion = CM_BUF_VERSION_BAD; /* known bad */
bufp->dirtyCounter++;
+ InterlockedDecrement(&cm_data.buf_usedCount);
}
else {
/* don't set dirty, since dirty implies
bp->dataVersion = CM_BUF_VERSION_BAD; /* known bad */
bp->dirtyCounter++;
lock_ReleaseMutex(&bp->mx);
+ InterlockedDecrement(&cm_data.buf_usedCount);
} else if (!(scp->flags & CM_SCACHEFLAG_RO)) {
if (code) {
goto skip;
buf_HoldLocked(nbp);
buf_ReleaseLocked(bp, TRUE);
didRelease = 1;
+ if (bp->dataVersion != CM_BUF_VERSION_BAD)
+ InterlockedDecrement(&cm_data.buf_usedCount);
buf_Recycle(bp);
}
}
for (bp = cm_data.buf_fileHashTablepp[i]; bp; bp = bp->fileHashp) {
if (cm_FidCmp(&bp->fid, &scp->fid) == 0) {
bp->dataVersion = CM_BUF_VERSION_BAD;
+ InterlockedDecrement(&cm_data.buf_usedCount);
found = 1;
}
}
bp->error = code;
bp->dataVersion = CM_BUF_VERSION_BAD;
bp->dirtyCounter++;
+ InterlockedDecrement(&cm_data.buf_usedCount);
break;
case CM_ERROR_TIMEDOUT:
case CM_ERROR_ALLDOWN:
}
lock_ReleaseMutex(&bp->mx);
buf_Release(bp);
+ InterlockedDecrement(&cm_data.buf_usedCount);
}
}
return 0;