From fae194a5b61cc77eb7c824d0b44e085123a6b7f5 Mon Sep 17 00:00:00 2001 From: Olga Kornievskaia Date: Mon, 19 Mar 2012 18:46:39 -0400 Subject: [PATCH] respect NO_INTERMIDIATE_BUFFERING for an open --- sys/nfs41_driver.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/nfs41_driver.c b/sys/nfs41_driver.c index 37d0b7c..9b9b36c 100644 --- a/sys/nfs41_driver.c +++ b/sys/nfs41_driver.c @@ -418,6 +418,7 @@ typedef struct _NFS41_FOBX { LARGE_INTEGER time; DWORD deleg_type; BOOLEAN write_thru; + BOOLEAN nocache; } NFS41_FOBX, *PNFS41_FOBX; #define NFS41GetFobxExtension(pFobx) \ (((pFobx) == NULL) ? NULL : (PNFS41_FOBX)((pFobx)->Context)) @@ -3629,6 +3630,7 @@ NTSTATUS nfs41_Create( DbgP("nfs41_Create: disabling buffering\n"); #endif SrvOpen->BufferingFlags = FCB_STATE_DISABLE_LOCAL_BUFFERING; + nfs41_fobx->nocache = TRUE; } else if (!entry->u.Open.deleg_type && !Fcb->OpenCount) { nfs41_fcb_list_entry *oentry; #ifdef DEBUG_OPEN @@ -5344,7 +5346,7 @@ NTSTATUS nfs41_Read( if ((!BooleanFlagOn(LowIoContext->ParamsFor.ReadWrite.Flags, LOWIO_READWRITEFLAG_PAGING_IO) && (SrvOpen->DesiredAccess & FILE_READ_DATA) && - !pVNetRootContext->nocache && + !pVNetRootContext->nocache && !nfs41_fobx->nocache && !(SrvOpen->BufferingFlags & (FCB_STATE_READBUFFERING_ENABLED | FCB_STATE_READCACHING_ENABLED)))) { @@ -5451,7 +5453,7 @@ NTSTATUS nfs41_Write( (SrvOpen->DesiredAccess & (FILE_WRITE_DATA | FILE_APPEND_DATA)) && !pVNetRootContext->write_thru && !pVNetRootContext->nocache && - !nfs41_fobx->write_thru && + !nfs41_fobx->write_thru && !nfs41_fobx->nocache && !(SrvOpen->BufferingFlags & (FCB_STATE_WRITEBUFFERING_ENABLED | FCB_STATE_WRITECACHING_ENABLED))) {