{
UNREFERENCED_PARAMETER(LibDeviceObject);
+ AFSDeviceExt *pRDRDevExt = (AFSDeviceExt *) AFSRDRDeviceObject->DeviceExtension;
NTSTATUS ntStatus = STATUS_SUCCESS;
IO_STACK_LOCATION *pIrpSp = IoGetCurrentIrpStackLocation( Irp);
PFILE_OBJECT pFileObject = pIrpSp->FileObject;
try_return( ntStatus = STATUS_INVALID_PARAMETER);
}
- AFSDbgTrace(( AFS_SUBSYSTEM_LOCK_PROCESSING,
+ AFSDbgTrace(( AFS_SUBSYSTEM_LOCK_PROCESSING|AFS_SUBSYSTEM_SECTION_OBJECT,
AFS_TRACE_LEVEL_VERBOSE,
"AFSFlushBuffers Acquiring Fcb SectionObject lock %p SHARED %08lX\n",
&pFcb->NPFcb->SectionObjectResource,
try_return( ntStatus = iosb.Status );
}
}
- __except( EXCEPTION_EXECUTE_HANDLER)
+ __except( AFSExceptionFilter( __FUNCTION__, GetExceptionCode(), GetExceptionInformation()))
{
try_return( ntStatus = GetExceptionCode());
}
- AFSDbgTrace(( AFS_SUBSYSTEM_LOCK_PROCESSING,
- AFS_TRACE_LEVEL_VERBOSE,
- "AFSFlushBuffers Releasing Fcb SectionObject lock %p SHARED %08lX\n",
- &pFcb->NPFcb->SectionObjectResource,
- PsGetCurrentThread()));
+ if( !BooleanFlagOn( pRDRDevExt->DeviceFlags, AFS_DEVICE_FLAG_DIRECT_SERVICE_IO))
+ {
- AFSReleaseResource( &pFcb->NPFcb->SectionObjectResource);
+ AFSDbgTrace(( AFS_SUBSYSTEM_LOCK_PROCESSING|AFS_SUBSYSTEM_SECTION_OBJECT,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSFlushBuffers Releasing Fcb SectionObject lock %p SHARED %08lX\n",
+ &pFcb->NPFcb->SectionObjectResource,
+ PsGetCurrentThread()));
- bReleaseSectionObject = FALSE;
+ AFSReleaseResource( &pFcb->NPFcb->SectionObjectResource);
- //
- // Now, flush to the server - if there is stuff to do
- //
+ bReleaseSectionObject = FALSE;
- ntStatus = AFSFlushExtents( pFcb,
- &pCcb->AuthGroup);
+ //
+ // Now, flush to the server - if there is stuff to do
+ //
- if( !NT_SUCCESS( ntStatus))
- {
+ ntStatus = AFSFlushExtents( pFcb,
+ &pCcb->AuthGroup);
- AFSReleaseExtentsWithFlush( pFcb,
- &pCcb->AuthGroup,
- TRUE);
+ if( !NT_SUCCESS( ntStatus))
+ {
- ntStatus = STATUS_SUCCESS;
- }
+ AFSReleaseExtentsWithFlush( pFcb,
+ &pCcb->AuthGroup,
+ TRUE);
+
+ ntStatus = STATUS_SUCCESS;
+ }
+ }
try_exit:
if ( bReleaseSectionObject)
{
- AFSDbgTrace(( AFS_SUBSYSTEM_LOCK_PROCESSING,
+ AFSDbgTrace(( AFS_SUBSYSTEM_LOCK_PROCESSING|AFS_SUBSYSTEM_SECTION_OBJECT,
AFS_TRACE_LEVEL_VERBOSE,
"AFSFlushBuffers Releasing Fcb SectionObject lock %p SHARED %08lX\n",
&pFcb->NPFcb->SectionObjectResource,