/* find a buffer, if any, for a particular file ID and offset. Assumes
* that buf_globalLock is write locked when called.
*/
-cm_buf_t *buf_FindLocked(struct cm_scache *scp, osi_hyper_t *offsetp)
+cm_buf_t *buf_FindLocked(struct cm_fid *fidp, osi_hyper_t *offsetp)
{
afs_uint32 i;
cm_buf_t *bp;
lock_AssertAny(&buf_globalLock);
- i = BUF_HASH(&scp->fid, offsetp);
+ i = BUF_HASH(fidp, offsetp);
for(bp = cm_data.buf_scacheHashTablepp[i]; bp; bp=bp->hashp) {
- if (cm_FidCmp(&scp->fid, &bp->fid) == 0
+ if (cm_FidCmp(fidp, &bp->fid) == 0
&& offsetp->LowPart == bp->offset.LowPart
&& offsetp->HighPart == bp->offset.HighPart) {
buf_HoldLocked(bp);
/* find a buffer with offset *offsetp for vnode *scp. Called
* with no locks held.
*/
-cm_buf_t *buf_Find(struct cm_scache *scp, osi_hyper_t *offsetp)
+cm_buf_t *buf_Find(struct cm_fid *fidp, osi_hyper_t *offsetp)
{
cm_buf_t *bp;
lock_ObtainRead(&buf_globalLock);
- bp = buf_FindLocked(scp, offsetp);
+ bp = buf_FindLocked(fidp, offsetp);
lock_ReleaseRead(&buf_globalLock);
return bp;
* that buf_globalLock is write locked when called. Uses the all buffer
* list.
*/
-cm_buf_t *buf_FindAllLocked(struct cm_scache *scp, osi_hyper_t *offsetp, afs_uint32 flags)
+cm_buf_t *buf_FindAllLocked(struct cm_fid *fidp, osi_hyper_t *offsetp, afs_uint32 flags)
{
cm_buf_t *bp;
if (flags == 0) {
for(bp = cm_data.buf_allp; bp; bp=bp->allp) {
- if (cm_FidCmp(&scp->fid, &bp->fid) == 0
+ if (cm_FidCmp(fidp, &bp->fid) == 0
&& offsetp->LowPart == bp->offset.LowPart
&& offsetp->HighPart == bp->offset.HighPart) {
buf_HoldLocked(bp);
}
} else {
for(bp = cm_data.buf_allp; bp; bp=bp->allp) {
- if (cm_FidCmp(&scp->fid, &bp->fid) == 0) {
+ if (cm_FidCmp(fidp, &bp->fid) == 0) {
char * fileOffset;
fileOffset = offsetp->QuadPart + cm_data.baseAddress;
/* find a buffer with offset *offsetp for vnode *scp. Called
* with no locks held. Use the all buffer list.
*/
-cm_buf_t *buf_FindAll(struct cm_scache *scp, osi_hyper_t *offsetp, afs_uint32 flags)
+cm_buf_t *buf_FindAll(struct cm_fid *fidp, osi_hyper_t *offsetp, afs_uint32 flags)
{
cm_buf_t *bp;
lock_ObtainRead(&buf_globalLock);
- bp = buf_FindAllLocked(scp, offsetp, flags);
+ bp = buf_FindAllLocked(fidp, offsetp, flags);
lock_ReleaseRead(&buf_globalLock);
return bp;
lock_ObtainWrite(&buf_globalLock);
/* check to see if we lost the race */
if (scp) {
- if (bp = buf_FindLocked(scp, offsetp)) {
+ if (bp = buf_FindLocked(&scp->fid, offsetp)) {
/* Do not call buf_ReleaseLocked() because we
* do not want to allow the buffer to be added
* to the free list.
buf_ValidateBufQueues();
#endif /* TESTING */
- bp = buf_Find(scp, &pageOffset);
+ bp = buf_Find(&scp->fid, &pageOffset);
if (bp) {
/* lock it and break out */
lock_ObtainMutex(&bp->mx);
extern void buf_WaitIO(cm_scache_t *, cm_buf_t *);
-extern cm_buf_t *buf_FindLocked(struct cm_scache *, osi_hyper_t *);
+extern cm_buf_t *buf_FindLocked(struct cm_fid *, osi_hyper_t *);
-extern cm_buf_t *buf_Find(struct cm_scache *, osi_hyper_t *);
+extern cm_buf_t *buf_Find(struct cm_fid *, osi_hyper_t *);
-extern cm_buf_t *buf_FindAllLocked(struct cm_scache *, osi_hyper_t *, afs_uint32 flags);
+extern cm_buf_t *buf_FindAllLocked(struct cm_fid *, osi_hyper_t *, afs_uint32 flags);
-extern cm_buf_t *buf_FindAll(struct cm_scache *, osi_hyper_t *, afs_uint32 flags);
+extern cm_buf_t *buf_FindAll(struct cm_fid *, osi_hyper_t *, afs_uint32 flags);
extern long buf_GetNewLocked(struct cm_scache *, osi_hyper_t *, cm_req_t *, cm_buf_t **);
break;
}
- bp = buf_Find(scp, &tbase);
+ bp = buf_Find(&scp->fid, &tbase);
/* We cheat slightly by not locking the bp mutex. */
if (bp) {
if ((bp->cmFlags & (CM_BUF_CMFETCHING | CM_BUF_CMSTORING)) == 0
thyper = ConvertLongToLargeInteger(temp);
tbase = LargeIntegerAdd(*inOffsetp, thyper);
- bufp = buf_Find(scp, &tbase);
+ bufp = buf_Find(&scp->fid, &tbase);
if (bufp) {
/* get buffer mutex and scp mutex safely */
lock_ReleaseWrite(&scp->rw);
tbase = LargeIntegerSubtract(firstModOffset, thyper);
while(LargeIntegerGreaterThanOrEqualTo(tbase, scanStart)) {
/* see if we can find the buffer */
- bufp = buf_Find(scp, &tbase);
+ bufp = buf_Find(&scp->fid, &tbase);
if (!bufp)
break;
tbase = LargeIntegerAdd(firstModOffset, thyper);
while(LargeIntegerLessThan(tbase, scanEnd)) {
/* see if we can find the buffer */
- bufp = buf_Find(scp, &tbase);
+ bufp = buf_Find(&scp->fid, &tbase);
if (!bufp)
break;
if (LargeIntegerGreaterThanOrEqualTo(pageBase, fileSize))
break;
- tbp = buf_Find(scp, &pageBase);
+ tbp = buf_Find(&scp->fid, &pageBase);
if (!tbp)
break;
if (dscp->fileType == CM_SCACHETYPE_MOUNTPOINT && !dscp->mountRootFid.volume)
code = CM_ERROR_NOSUCHFILE;
else if (dscp->fileType == CM_SCACHETYPE_DIRECTORY) {
- cm_buf_t *bp = buf_Find(dscp, &hzero);
+ cm_buf_t *bp = buf_Find(&dscp->fid, &hzero);
if (bp) {
buf_Release(bp);
bp = NULL;
if (dscp->fileType == CM_SCACHETYPE_MOUNTPOINT && !dscp->mountRootFid.volume)
code = CM_ERROR_NOSUCHFILE;
else if (dscp->fileType == CM_SCACHETYPE_DIRECTORY) {
- cm_buf_t *bp = buf_Find(dscp, &hzero);
+ cm_buf_t *bp = buf_Find(&dscp->fid, &hzero);
if (bp) {
buf_Release(bp);
bp = NULL;