From fd42e08bf1882a02c3200e1c33a101e644aa046a Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Tue, 15 Nov 2011 18:35:26 -0500 Subject: [PATCH] Windows: buf_CleanAsyncLocked dirty range only buf_CleanAsyncLocked() should not instruct cm_BufWrite() to write a full chunk if the current buffer is the only one that is dirty. cm_BufWrite() will determine if it is appropriate to fill a full chunk when storing. Instructing it to check a full chunk forces it to do more work than necessary. Change-Id: Ie140d405147d700196532b72f04885a301a2550f Reviewed-on: http://gerrit.openafs.org/6054 Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsd/cm_buf.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/WINNT/afsd/cm_buf.c b/src/WINNT/afsd/cm_buf.c index 5068d2f99d..b9ea1cb583 100644 --- a/src/WINNT/afsd/cm_buf.c +++ b/src/WINNT/afsd/cm_buf.c @@ -863,15 +863,14 @@ afs_uint32 buf_CleanAsyncLocked(cm_scache_t *scp, cm_buf_t *bp, cm_req_t *reqp, offset = bp->offset; LargeIntegerAdd(offset, ConvertLongToLargeInteger(bp->dirty_offset)); + /* + * Only specify the dirty length of the current buffer in the call + * to cm_BufWrite(). It is the responsibility of cm_BufWrite() + * to determine if it is appropriate to fill a full chunk of data + * when storing to the file server. + */ code = (*cm_buf_opsp->Writep)(scp, &offset, -#if 1 - /* we might as well try to write all of the contiguous - * dirty buffers in one RPC - */ - cm_chunkSize, -#else bp->dirty_length, -#endif flags, bp->userp, reqp); osi_Log3(buf_logp, "buf_CleanAsyncLocked I/O on scp 0x%p buf 0x%p, done=%d", scp, bp, code); }