From f5c25235008a446449f1220f76fa5037bdceb637 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sun, 26 Jul 2009 11:54:27 -0400 Subject: [PATCH] Windows: Add cm_req_t parameter to buf_Get* functions The buf_Get* functions do not currently accept a cm_req_t parameter. As a result they allocate their own cm_req_t on the stack even though all callers already have one that can be used. LICENSE MIT Reviewed-on: http://gerrit.openafs.org/222 Tested-by: Jeffrey Altman Reviewed-by: Jeffrey Altman --- src/WINNT/afsd/cm_buf.c | 15 ++++++--------- src/WINNT/afsd/cm_buf.h | 6 +++--- src/WINNT/afsd/cm_dcache.c | 4 ++-- src/WINNT/afsd/cm_dir.c | 4 ++-- src/WINNT/afsd/cm_vnodeops.c | 8 ++++---- src/WINNT/afsd/rawops.c | 4 ++-- src/WINNT/afsd/smb.c | 6 +++--- src/WINNT/afsd/smb3.c | 2 +- 8 files changed, 23 insertions(+), 26 deletions(-) diff --git a/src/WINNT/afsd/cm_buf.c b/src/WINNT/afsd/cm_buf.c index 9e7e7ce04..918dd98a9 100644 --- a/src/WINNT/afsd/cm_buf.c +++ b/src/WINNT/afsd/cm_buf.c @@ -861,14 +861,11 @@ void buf_Recycle(cm_buf_t *bp) * space from the buffer pool. In that case, the buffer will be returned * without being hashed into the hash table. */ -long buf_GetNewLocked(struct cm_scache *scp, osi_hyper_t *offsetp, cm_buf_t **bufpp) +long buf_GetNewLocked(struct cm_scache *scp, osi_hyper_t *offsetp, cm_req_t *reqp, cm_buf_t **bufpp) { cm_buf_t *bp; /* buffer we're dealing with */ cm_buf_t *nextBp; /* next buffer in file hash chain */ afs_uint32 i; /* temp */ - cm_req_t req; - - cm_InitReq(&req); /* just in case */ #ifdef TESTING buf_ValidateBufQueues(); @@ -969,7 +966,7 @@ long buf_GetNewLocked(struct cm_scache *scp, osi_hyper_t *offsetp, cm_buf_t **bu * have the WRITING flag set, so we won't get * back here. */ - buf_CleanAsync(bp, &req, NULL); + buf_CleanAsync(bp, reqp, NULL); /* now put it back and go around again */ buf_Release(bp); @@ -1061,7 +1058,7 @@ long buf_GetNewLocked(struct cm_scache *scp, osi_hyper_t *offsetp, cm_buf_t **bu /* get a page, returning it held but unlocked. Doesn't fill in the page * with I/O, since we're going to write the whole thing new. */ -long buf_GetNew(struct cm_scache *scp, osi_hyper_t *offsetp, cm_buf_t **bufpp) +long buf_GetNew(struct cm_scache *scp, osi_hyper_t *offsetp, cm_req_t *reqp, cm_buf_t **bufpp) { cm_buf_t *bp; long code; @@ -1080,7 +1077,7 @@ long buf_GetNew(struct cm_scache *scp, osi_hyper_t *offsetp, cm_buf_t **bufpp) } /* otherwise, we have to create a page */ - code = buf_GetNewLocked(scp, &pageOffset, &bp); + code = buf_GetNewLocked(scp, &pageOffset, reqp, &bp); /* check if the buffer was created in a race condition branch. * If so, go around so we can hold a reference to it. @@ -1113,7 +1110,7 @@ long buf_GetNew(struct cm_scache *scp, osi_hyper_t *offsetp, cm_buf_t **bufpp) /* get a page, returning it held but unlocked. Make sure it is complete */ /* The scp must be unlocked when passed to this function */ -long buf_Get(struct cm_scache *scp, osi_hyper_t *offsetp, cm_buf_t **bufpp) +long buf_Get(struct cm_scache *scp, osi_hyper_t *offsetp, cm_req_t *reqp, cm_buf_t **bufpp) { cm_buf_t *bp; long code; @@ -1147,7 +1144,7 @@ long buf_Get(struct cm_scache *scp, osi_hyper_t *offsetp, cm_buf_t **bufpp) } /* otherwise, we have to create a page */ - code = buf_GetNewLocked(scp, &pageOffset, &bp); + code = buf_GetNewLocked(scp, &pageOffset, reqp, &bp); /* bp->mx is now held */ /* check if the buffer was created in a race condition branch. diff --git a/src/WINNT/afsd/cm_buf.h b/src/WINNT/afsd/cm_buf.h index db8bef14b..f8f300f58 100644 --- a/src/WINNT/afsd/cm_buf.h +++ b/src/WINNT/afsd/cm_buf.h @@ -154,11 +154,11 @@ extern cm_buf_t *buf_FindLocked(struct cm_scache *, osi_hyper_t *); extern cm_buf_t *buf_Find(struct cm_scache *, osi_hyper_t *); -extern long buf_GetNewLocked(struct cm_scache *, osi_hyper_t *, cm_buf_t **); +extern long buf_GetNewLocked(struct cm_scache *, osi_hyper_t *, cm_req_t *, cm_buf_t **); -extern long buf_Get(struct cm_scache *, osi_hyper_t *, cm_buf_t **); +extern long buf_Get(struct cm_scache *, osi_hyper_t *, cm_req_t *, cm_buf_t **); -extern long buf_GetNew(struct cm_scache *, osi_hyper_t *, cm_buf_t **); +extern long buf_GetNew(struct cm_scache *, osi_hyper_t *, cm_req_t *, cm_buf_t **); extern afs_uint32 buf_CleanAsyncLocked(cm_buf_t *, cm_req_t *, afs_uint32 *); diff --git a/src/WINNT/afsd/cm_dcache.c b/src/WINNT/afsd/cm_dcache.c index 92d06e2f3..ecb28ab97 100644 --- a/src/WINNT/afsd/cm_dcache.c +++ b/src/WINNT/afsd/cm_dcache.c @@ -714,7 +714,7 @@ cm_BkgPrefetch(cm_scache_t *scp, afs_uint32 p1, afs_uint32 p2, afs_uint32 p3, af mxheld = 0; } - code = buf_Get(scp, &offset, &bp); + code = buf_Get(scp, &offset, &req, &bp); if (code) break; @@ -1106,7 +1106,7 @@ long cm_SetupFetchBIOD(cm_scache_t *scp, osi_hyper_t *offsetp, if (LargeIntegerGreaterThanOrEqualTo(pageBase, fileSize)) break; - code = buf_Get(scp, &pageBase, &tbp); + code = buf_Get(scp, &pageBase, reqp, &tbp); if (code) { lock_ObtainWrite(&scp->rw); cm_SyncOpDone(scp, NULL, CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS); diff --git a/src/WINNT/afsd/cm_dir.c b/src/WINNT/afsd/cm_dir.c index ac92932ae..c28edef8a 100644 --- a/src/WINNT/afsd/cm_dir.c +++ b/src/WINNT/afsd/cm_dir.c @@ -1509,7 +1509,7 @@ cm_DirPrefetchBuffers(cm_dirOp_t * op) offset.HighPart, offset.LowPart); lock_ReleaseWrite(&op->scp->rw); - code = buf_Get(op->scp, &offset, &bufferp); + code = buf_Get(op->scp, &offset, &op->req, &bufferp); lock_ObtainWrite(&op->scp->rw); @@ -1657,7 +1657,7 @@ cm_DirGetPage(cm_dirOp_t * op, goto _has_buffer; } - code = buf_Get(op->scp, &bufferOffset, &bufferp); + code = buf_Get(op->scp, &bufferOffset, &op->req, &bufferp); if (code) { osi_Log1(afsd_logp, " buf_Get returned code 0x%x", code); bufferp = NULL; diff --git a/src/WINNT/afsd/cm_vnodeops.c b/src/WINNT/afsd/cm_vnodeops.c index 60ca987db..71163be8b 100644 --- a/src/WINNT/afsd/cm_vnodeops.c +++ b/src/WINNT/afsd/cm_vnodeops.c @@ -351,7 +351,7 @@ long cm_CheckNTDelete(cm_scache_t *dscp, cm_scache_t *scp, cm_user_t *userp, return code; thyper.HighPart = 0; thyper.LowPart = 0; - code = buf_Get(scp, &thyper, &bufferp); + code = buf_Get(scp, &thyper, reqp, &bufferp); if (code) return code; @@ -590,7 +590,7 @@ long cm_ApplyDir(cm_scache_t *scp, cm_DirFuncp_t funcp, void *parmp, bufferp = NULL; } - code = buf_Get(scp, &thyper, &bufferp); + code = buf_Get(scp, &thyper, reqp, &bufferp); if (code) { /* if buf_Get() fails we do not have a buffer object to lock */ bufferp = NULL; @@ -829,7 +829,7 @@ long cm_ReadMountPoint(cm_scache_t *scp, cm_user_t *userp, cm_req_t *reqp) lock_ReleaseWrite(&scp->rw); thyper.LowPart = thyper.HighPart = 0; - code = buf_Get(scp, &thyper, &bufp); + code = buf_Get(scp, &thyper, reqp, &bufp); lock_ObtainWrite(&scp->rw); if (code) @@ -1669,7 +1669,7 @@ long cm_HandleLink(cm_scache_t *linkScp, cm_user_t *userp, cm_req_t *reqp) /* read the link data from the file server*/ lock_ReleaseWrite(&linkScp->rw); thyper.LowPart = thyper.HighPart = 0; - code = buf_Get(linkScp, &thyper, &bufp); + code = buf_Get(linkScp, &thyper, reqp, &bufp); lock_ObtainWrite(&linkScp->rw); if (code) return code; diff --git a/src/WINNT/afsd/rawops.c b/src/WINNT/afsd/rawops.c index baac384ff..c06af5eec 100644 --- a/src/WINNT/afsd/rawops.c +++ b/src/WINNT/afsd/rawops.c @@ -82,7 +82,7 @@ long ReadData(cm_scache_t *scp, osi_hyper_t offset, long count, char *op, } lock_ReleaseWrite(&scp->rw); - code = buf_Get(scp, &thyper, &bufferp); + code = buf_Get(scp, &thyper, &req, &bufferp); lock_ObtainWrite(&scp->rw); if (code) goto done; @@ -243,7 +243,7 @@ long WriteData(cm_scache_t *scp, osi_hyper_t offset, long count, char *op, } lock_ReleaseWrite(&scp->rw); - code = buf_Get(scp, &thyper, &bufferp); + code = buf_Get(scp, &thyper, &req, &bufferp); lock_ObtainMutex(&bufferp->mx); lock_ObtainWrite(&scp->rw); diff --git a/src/WINNT/afsd/smb.c b/src/WINNT/afsd/smb.c index f10f2cfcb..4cc33cb22 100644 --- a/src/WINNT/afsd/smb.c +++ b/src/WINNT/afsd/smb.c @@ -4892,7 +4892,7 @@ long smb_ReceiveCoreSearchDir(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *ou bufferp = NULL; } lock_ReleaseWrite(&scp->rw); - code = buf_Get(scp, &thyper, &bufferp); + code = buf_Get(scp, &thyper, &req, &bufferp); lock_ObtainMutex(&dsp->mx); /* now, if we're doing a star match, do bulk fetching of all of @@ -6996,7 +6996,7 @@ long smb_ReadData(smb_fid_t *fidp, osi_hyper_t *offsetp, afs_uint32 count, char } lock_ReleaseWrite(&scp->rw); - code = buf_Get(scp, &thyper, &bufferp); + code = buf_Get(scp, &thyper, &req, &bufferp); lock_ObtainWrite(&scp->rw); if (code) goto done; @@ -7181,7 +7181,7 @@ long smb_WriteData(smb_fid_t *fidp, osi_hyper_t *offsetp, afs_uint32 count, char } lock_ReleaseWrite(&scp->rw); - code = buf_Get(scp, &thyper, &bufferp); + code = buf_Get(scp, &thyper, &req, &bufferp); lock_ObtainMutex(&bufferp->mx); lock_ObtainWrite(&scp->rw); diff --git a/src/WINNT/afsd/smb3.c b/src/WINNT/afsd/smb3.c index 146baab38..ade4503d0 100644 --- a/src/WINNT/afsd/smb3.c +++ b/src/WINNT/afsd/smb3.c @@ -5221,7 +5221,7 @@ long smb_ReceiveTran2SearchDir(smb_vc_t *vcp, smb_tran2Packet_t *p, smb_packet_t bufferp = NULL; } lock_ReleaseWrite(&scp->rw); - code = buf_Get(scp, &thyper, &bufferp); + code = buf_Get(scp, &thyper, &req, &bufferp); lock_ObtainWrite(&scp->rw); if (code) { osi_Log2(smb_logp, "T2 search dir buf_Get scp %x failed %d", scp, code); -- 2.39.5