From cdbd09abf1590c5b84d8238e3cf4096919e3446f Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sun, 26 Jul 2009 12:20:26 -0400 Subject: [PATCH] Windows: Add cm_req_t parameter to cm_MergeStatus cm_MergeStatus allocates its own local cm_req_t object even though all of its callers already have an active cm_req_t object available. LICENSE MIT Reviewed-on: http://gerrit.openafs.org/223 Tested-by: Jeffrey Altman Reviewed-by: Jeffrey Altman --- src/WINNT/afsd/cm_callback.c | 4 ++-- src/WINNT/afsd/cm_dcache.c | 6 +++--- src/WINNT/afsd/cm_scache.c | 8 ++------ src/WINNT/afsd/cm_scache.h | 1 + src/WINNT/afsd/cm_vnodeops.c | 28 ++++++++++++++-------------- 5 files changed, 22 insertions(+), 25 deletions(-) diff --git a/src/WINNT/afsd/cm_callback.c b/src/WINNT/afsd/cm_callback.c index 81a6e5e15..9da08b8a0 100644 --- a/src/WINNT/afsd/cm_callback.c +++ b/src/WINNT/afsd/cm_callback.c @@ -1783,7 +1783,7 @@ long cm_GetCallback(cm_scache_t *scp, struct cm_user *userp, lock_ReleaseMutex(&cm_Freelance_Lock); // Fetch the status info - cm_MergeStatus(NULL, scp, &afsStatus, &volSync, userp, 0); + cm_MergeStatus(NULL, scp, &afsStatus, &volSync, userp, reqp, 0); // Indicate that the callback is not done lock_ObtainMutex(&cm_Freelance_Lock); @@ -1847,7 +1847,7 @@ long cm_GetCallback(cm_scache_t *scp, struct cm_user *userp, lock_ObtainWrite(&scp->rw); if (code == 0) { cm_EndCallbackGrantingCall(scp, &cbr, &callback, 0); - cm_MergeStatus(NULL, scp, &afsStatus, &volSync, userp, 0); + cm_MergeStatus(NULL, scp, &afsStatus, &volSync, userp, reqp, 0); } else { cm_EndCallbackGrantingCall(NULL, &cbr, NULL, 0); } diff --git a/src/WINNT/afsd/cm_dcache.c b/src/WINNT/afsd/cm_dcache.c index ecb28ab97..2dd04d59b 100644 --- a/src/WINNT/afsd/cm_dcache.c +++ b/src/WINNT/afsd/cm_dcache.c @@ -299,7 +299,7 @@ long cm_BufWrite(void *vscp, osi_hyper_t *offsetp, long length, long flags, if (LargeIntegerGreaterThanOrEqualTo(t, scp->length)) scp->mask &= ~CM_SCACHEMASK_LENGTH; - cm_MergeStatus(NULL, scp, &outStatus, &volSync, userp, CM_MERGEFLAG_STOREDATA); + cm_MergeStatus(NULL, scp, &outStatus, &volSync, userp, reqp, CM_MERGEFLAG_STOREDATA); } else { if (code == CM_ERROR_SPACE) scp->flags |= CM_SCACHEFLAG_OUTOFSPACE; @@ -423,7 +423,7 @@ long cm_StoreMini(cm_scache_t *scp, cm_user_t *userp, cm_req_t *reqp) if (LargeIntegerGreaterThanOrEqualTo(t, scp->length)) scp->mask &= ~CM_SCACHEMASK_LENGTH; - cm_MergeStatus(NULL, scp, &outStatus, &volSync, userp, CM_MERGEFLAG_STOREDATA); + cm_MergeStatus(NULL, scp, &outStatus, &volSync, userp, reqp, CM_MERGEFLAG_STOREDATA); } return code; @@ -1724,7 +1724,7 @@ long cm_GetBuffer(cm_scache_t *scp, cm_buf_t *bufp, int *cpffp, cm_user_t *userp cm_ReleaseBIOD(&biod, 0, code, 1); if (code == 0) - cm_MergeStatus(NULL, scp, &afsStatus, &volSync, userp, 0); + cm_MergeStatus(NULL, scp, &afsStatus, &volSync, userp, reqp, 0); return code; } diff --git a/src/WINNT/afsd/cm_scache.c b/src/WINNT/afsd/cm_scache.c index d03052b14..3f64b83fe 100644 --- a/src/WINNT/afsd/cm_scache.c +++ b/src/WINNT/afsd/cm_scache.c @@ -1500,7 +1500,7 @@ void cm_SyncOpDone(cm_scache_t *scp, cm_buf_t *bufp, afs_uint32 flags) void cm_MergeStatus(cm_scache_t *dscp, cm_scache_t *scp, AFSFetchStatus *statusp, AFSVolSync *volsyncp, - cm_user_t *userp, afs_uint32 flags) + cm_user_t *userp, cm_req_t *reqp, afs_uint32 flags) { afs_uint64 dataVersion; @@ -1576,12 +1576,8 @@ void cm_MergeStatus(cm_scache_t *dscp, cellp = cm_FindCellByID(scp->fid.cell, 0); if (scp->cbServerp) { struct cm_volume *volp = NULL; - cm_req_t req; - - cm_InitReq(&req); - cm_FindVolumeByID(cellp, scp->fid.volume, userp, - &req, CM_GETVOL_FLAG_CREATE, &volp); + reqp, CM_GETVOL_FLAG_CREATE, &volp); osi_Log2(afsd_logp, "old data from server %x volume %s", scp->cbServerp->addr.sin_addr.s_addr, volp ? volp->namep : "(unknown)"); diff --git a/src/WINNT/afsd/cm_scache.h b/src/WINNT/afsd/cm_scache.h index c7b1e0a9c..df5ca405c 100644 --- a/src/WINNT/afsd/cm_scache.h +++ b/src/WINNT/afsd/cm_scache.h @@ -363,6 +363,7 @@ extern void cm_MergeStatus(cm_scache_t * dscp, cm_scache_t * scp, struct AFSFetchStatus * statusp, struct AFSVolSync * volsyncp, struct cm_user *userp, + cm_req_t *reqp, afs_uint32 flags); extern void cm_AFSFidFromFid(struct AFSFid *, cm_fid_t *); diff --git a/src/WINNT/afsd/cm_vnodeops.c b/src/WINNT/afsd/cm_vnodeops.c index 71163be8b..2754315fa 100644 --- a/src/WINNT/afsd/cm_vnodeops.c +++ b/src/WINNT/afsd/cm_vnodeops.c @@ -1607,7 +1607,7 @@ long cm_Unlink(cm_scache_t *dscp, fschar_t *fnamep, clientchar_t * cnamep, cm_dnlcRemove(dscp, cnamep); cm_SyncOpDone(dscp, NULL, sflags); if (code == 0) { - cm_MergeStatus(NULL, dscp, &newDirStatus, &volSync, userp, CM_MERGEFLAG_DIROP); + cm_MergeStatus(NULL, dscp, &newDirStatus, &volSync, userp, reqp, CM_MERGEFLAG_DIROP); } else if (code == CM_ERROR_NOSUCHFILE) { /* windows would not have allowed the request to delete the file * if it did not believe the file existed. therefore, we must @@ -2381,7 +2381,7 @@ cm_TryBulkStatRPC(cm_scache_t *dscp, cm_bulkStat_t *bbp, cm_user_t *userp, cm_re cm_EndCallbackGrantingCall(scp, &cbReq, &bbp->callbacks[j], CM_CALLBACK_MAINTAINCOUNT); - cm_MergeStatus(dscp, scp, &bbp->stats[j], &volSync, userp, 0); + cm_MergeStatus(dscp, scp, &bbp->stats[j], &volSync, userp, reqp, 0); } lock_ReleaseWrite(&scp->rw); cm_ReleaseSCache(scp); @@ -2636,7 +2636,7 @@ long cm_SetAttr(cm_scache_t *scp, cm_attr_t *attrp, cm_user_t *userp, lock_ObtainWrite(&scp->rw); cm_SyncOpDone(scp, NULL, CM_SCACHESYNC_STORESTATUS); if (code == 0) - cm_MergeStatus(NULL, scp, &afsOutStatus, &volSync, userp, + cm_MergeStatus(NULL, scp, &afsOutStatus, &volSync, userp, reqp, CM_MERGEFLAG_FORCE|CM_MERGEFLAG_STOREDATA); /* if we're changing the mode bits, discard the ACL cache, @@ -2741,7 +2741,7 @@ long cm_Create(cm_scache_t *dscp, clientchar_t *cnamep, long flags, cm_attr_t *a lock_ObtainWrite(&dscp->rw); cm_SyncOpDone(dscp, NULL, CM_SCACHESYNC_STOREDATA); if (code == 0) { - cm_MergeStatus(NULL, dscp, &updatedDirStatus, &volSync, userp, CM_MERGEFLAG_DIROP); + cm_MergeStatus(NULL, dscp, &updatedDirStatus, &volSync, userp, reqp, CM_MERGEFLAG_DIROP); } lock_ReleaseWrite(&dscp->rw); @@ -2758,7 +2758,7 @@ long cm_Create(cm_scache_t *dscp, clientchar_t *cnamep, long flags, cm_attr_t *a scp->creator = userp; /* remember who created it */ if (!cm_HaveCallback(scp)) { cm_MergeStatus(dscp, scp, &newFileStatus, &volSync, - userp, 0); + userp, reqp, 0); cm_EndCallbackGrantingCall(scp, &cbReq, &newFileCallback, 0); didEnd = 1; @@ -2906,7 +2906,7 @@ long cm_MakeDir(cm_scache_t *dscp, clientchar_t *cnamep, long flags, cm_attr_t * lock_ObtainWrite(&dscp->rw); cm_SyncOpDone(dscp, NULL, CM_SCACHESYNC_STOREDATA); if (code == 0) { - cm_MergeStatus(NULL, dscp, &updatedDirStatus, &volSync, userp, CM_MERGEFLAG_DIROP); + cm_MergeStatus(NULL, dscp, &updatedDirStatus, &volSync, userp, reqp, CM_MERGEFLAG_DIROP); } lock_ReleaseWrite(&dscp->rw); @@ -2922,7 +2922,7 @@ long cm_MakeDir(cm_scache_t *dscp, clientchar_t *cnamep, long flags, cm_attr_t * lock_ObtainWrite(&scp->rw); if (!cm_HaveCallback(scp)) { cm_MergeStatus(dscp, scp, &newDirStatus, &volSync, - userp, 0); + userp, reqp, 0); cm_EndCallbackGrantingCall(scp, &cbReq, &newDirCallback, 0); didEnd = 1; @@ -3024,7 +3024,7 @@ long cm_Link(cm_scache_t *dscp, clientchar_t *cnamep, cm_scache_t *sscp, long fl lock_ObtainWrite(&dscp->rw); cm_SyncOpDone(dscp, NULL, CM_SCACHESYNC_STOREDATA); if (code == 0) { - cm_MergeStatus(NULL, dscp, &updatedDirStatus, &volSync, userp, CM_MERGEFLAG_DIROP); + cm_MergeStatus(NULL, dscp, &updatedDirStatus, &volSync, userp, reqp, CM_MERGEFLAG_DIROP); } lock_ReleaseWrite(&dscp->rw); @@ -3041,7 +3041,7 @@ long cm_Link(cm_scache_t *dscp, clientchar_t *cnamep, cm_scache_t *sscp, long fl /* Update the linked object status */ if (code == 0) { lock_ObtainWrite(&sscp->rw); - cm_MergeStatus(NULL, sscp, &newLinkStatus, &volSync, userp, 0); + cm_MergeStatus(NULL, sscp, &newLinkStatus, &volSync, userp, reqp, 0); lock_ReleaseWrite(&sscp->rw); } @@ -3118,7 +3118,7 @@ long cm_SymLink(cm_scache_t *dscp, clientchar_t *cnamep, fschar_t *contentsp, lo lock_ObtainWrite(&dscp->rw); cm_SyncOpDone(dscp, NULL, CM_SCACHESYNC_STOREDATA); if (code == 0) { - cm_MergeStatus(NULL, dscp, &updatedDirStatus, &volSync, userp, CM_MERGEFLAG_DIROP); + cm_MergeStatus(NULL, dscp, &updatedDirStatus, &volSync, userp, reqp, CM_MERGEFLAG_DIROP); } lock_ReleaseWrite(&dscp->rw); @@ -3146,7 +3146,7 @@ long cm_SymLink(cm_scache_t *dscp, clientchar_t *cnamep, fschar_t *contentsp, lo lock_ObtainWrite(&scp->rw); if (!cm_HaveCallback(scp)) { cm_MergeStatus(dscp, scp, &newLinkStatus, &volSync, - userp, 0); + userp, reqp, 0); } lock_ReleaseWrite(&scp->rw); cm_ReleaseSCache(scp); @@ -3257,7 +3257,7 @@ long cm_RemoveDir(cm_scache_t *dscp, fschar_t *fnamep, clientchar_t *cnamep, cm_ cm_SyncOpDone(dscp, NULL, CM_SCACHESYNC_STOREDATA); if (code == 0) { cm_dnlcRemove(dscp, cnamep); - cm_MergeStatus(NULL, dscp, &updatedDirStatus, &volSync, userp, CM_MERGEFLAG_DIROP); + cm_MergeStatus(NULL, dscp, &updatedDirStatus, &volSync, userp, reqp, CM_MERGEFLAG_DIROP); } lock_ReleaseWrite(&dscp->rw); @@ -3562,7 +3562,7 @@ long cm_Rename(cm_scache_t *oldDscp, fschar_t *oldNamep, clientchar_t *cOldNamep if (code == 0) cm_MergeStatus(NULL, oldDscp, &updatedOldDirStatus, &volSync, - userp, CM_MERGEFLAG_DIROP); + userp, reqp, CM_MERGEFLAG_DIROP); lock_ReleaseWrite(&oldDscp->rw); if (code == 0 && cm_CheckDirOpForSingleChange(&oldDirOp)) { @@ -3602,7 +3602,7 @@ long cm_Rename(cm_scache_t *oldDscp, fschar_t *oldNamep, clientchar_t *cOldNamep cm_SyncOpDone(newDscp, NULL, CM_SCACHESYNC_STOREDATA); if (code == 0) cm_MergeStatus(NULL, newDscp, &updatedNewDirStatus, &volSync, - userp, CM_MERGEFLAG_DIROP); + userp, reqp, CM_MERGEFLAG_DIROP); lock_ReleaseWrite(&newDscp->rw); #if 0 -- 2.39.5