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 <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
This commit is contained in:
Jeffrey Altman 2011-11-15 18:35:26 -05:00 committed by Jeffrey Altman
parent 55f5f356af
commit fd42e08bf1

View File

@ -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);
}