From: Jeffrey Altman Date: Fri, 2 Dec 2011 18:41:38 +0000 (-0500) Subject: Windows: memset in RDR_RequestFileExtentsAsync X-Git-Tag: upstream/1.8.0_pre1^2~2985 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=3fce5b3541d118bc452fe236e557acde57587462;p=packages%2Fo%2Fopenafs.git Windows: memset in RDR_RequestFileExtentsAsync The logic in RDR_RequestFileExtentsAsync() made it possible for memset() to be called multiple times on a buffer that is already known to be up to date. Restructure the code to make things faster. Change-Id: Iea09b01f126a6d8915e6bf3dd3978ad4b482eb03 Reviewed-on: http://gerrit.openafs.org/6178 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- diff --git a/src/WINNT/afsrdr/user/RDRFunction.c b/src/WINNT/afsrdr/user/RDRFunction.c index b2151d23e..d822abf70 100644 --- a/src/WINNT/afsrdr/user/RDRFunction.c +++ b/src/WINNT/afsrdr/user/RDRFunction.c @@ -3215,21 +3215,22 @@ RDR_RequestFileExtentsAsync( IN cm_user_t *userp, else minLength = scp->length; - if (LargeIntegerGreaterThanOrEqualTo(bufp->offset, minLength)) { + if (!bHaveBuffer && + LargeIntegerGreaterThanOrEqualTo(bufp->offset, minLength)) { memset(bufp->datap, 0, cm_data.buf_blockSize); bufp->dataVersion = scp->dataVersion; bHaveBuffer = TRUE; } - lock_ReleaseRead(&scp->rw); - - if ((RequestExtentsCB->Flags & AFS_EXTENT_FLAG_CLEAN) && - ByteOffset.QuadPart <= bufp->offset.QuadPart && - EndOffset.QuadPart >= bufp->offset.QuadPart + cm_data.blockSize) { + else if ((RequestExtentsCB->Flags & AFS_EXTENT_FLAG_CLEAN) && + ByteOffset.QuadPart <= bufp->offset.QuadPart && + EndOffset.QuadPart >= bufp->offset.QuadPart + cm_data.blockSize) + { memset(bufp->datap, 0, cm_data.blockSize); bufp->dataVersion = scp->dataVersion; buf_SetDirty(bufp, &req, 0, cm_data.blockSize, userp); bHaveBuffer = TRUE; } + lock_ReleaseRead(&scp->rw); } /*