Windows: Treat all cached writes as write-through

Treat all writes that are cached in the windows page cache as
write-through requests so that they are delivered immediately to
the AFS cache.

The upside is that the afsd service can begin to store data to the
file server immediately which can be of significant importance whe
the AFSCache is larger than the file size and the file size is large
and the bandwidth to the file server is slow.  In that situation
the entire file can be written into the windows page cache and
will only be flushed to disk at the last handle close on the file.

The downside is that all data will be written to the file server
including that for files that will later have the delete pending
flag applied.

Reviewed-on: http://gerrit.openafs.org/7319
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
(cherry picked from commit b12a038b48)

Change-Id: Ic02b98c321d5ab28ded9a6a97f4f181de216b7b4
Reviewed-on: http://gerrit.openafs.org/7345
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
This commit is contained in:
Jeffrey Altman 2012-05-02 18:05:26 -04:00 committed by Jeffrey Altman
parent b95f16bda5
commit 5130681fa2

View File

@ -111,7 +111,6 @@ AFSCommonWrite( IN PDEVICE_OBJECT DeviceObject,
BOOLEAN bReleasePaging = FALSE;
BOOLEAN bExtendingWrite = FALSE;
BOOLEAN bCompleteIrp = TRUE;
BOOLEAN bForceFlush = FALSE;
BOOLEAN bLockOK;
BOOLEAN bMapped = TRUE;
HANDLE hCallingUser = OnBehalfOf;
@ -334,7 +333,6 @@ AFSCommonWrite( IN PDEVICE_OBJECT DeviceObject,
if( NULL != pFileObject->SectionObjectPointer->DataSectionObject && !bPagingIo && bNonCachedIo)
{
bNonCachedIo = FALSE;
bForceFlush = TRUE;
}
if( (!bPagingIo && !bNonCachedIo))
@ -617,7 +615,7 @@ AFSCommonWrite( IN PDEVICE_OBJECT DeviceObject,
liStartingByte.QuadPart,
ulByteCount);
ntStatus = AFSCachedWrite( DeviceObject, Irp, liStartingByte, ulByteCount, bForceFlush);
ntStatus = AFSCachedWrite( DeviceObject, Irp, liStartingByte, ulByteCount, TRUE);
}
else