IN PIRP Irp)
{
+ UNREFERENCED_PARAMETER(LibDeviceObject);
+ AFSDeviceExt *pRDRDevExt = (AFSDeviceExt *) AFSRDRDeviceObject->DeviceExtension;
NTSTATUS ntStatus = STATUS_SUCCESS;
IO_STACK_LOCATION *pIrpSp = IoGetCurrentIrpStackLocation( Irp);
PFILE_OBJECT pFileObject = pIrpSp->FileObject;
if( pFcb == NULL)
{
- AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
+ AFSDbgTrace(( AFS_SUBSYSTEM_FILE_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSFlushBuffers Attempted access (%08lX) when pFcb == NULL\n",
- Irp);
+ "AFSFlushBuffers Attempted access (%p) when pFcb == NULL\n",
+ Irp));
try_return( ntStatus = STATUS_INVALID_DEVICE_REQUEST);
}
try_return( ntStatus = STATUS_INVALID_PARAMETER);
}
- AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
+ AFSDbgTrace(( AFS_SUBSYSTEM_LOCK_PROCESSING|AFS_SUBSYSTEM_SECTION_OBJECT,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSFlushBuffers Acquiring Fcb SectionObject lock %08lX SHARED %08lX\n",
+ "AFSFlushBuffers Acquiring Fcb SectionObject lock %p SHARED %08lX\n",
&pFcb->NPFcb->SectionObjectResource,
- PsGetCurrentThread());
+ PsGetCurrentThread()));
AFSAcquireShared( &pFcb->NPFcb->SectionObjectResource,
TRUE);
if (!NT_SUCCESS( iosb.Status ))
{
- AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
+ AFSDbgTrace(( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
"AFSFlushBuffers CcFlushCache [1] failure FID %08lX-%08lX-%08lX-%08lX Status 0x%08lX Bytes 0x%08lX\n",
pFcb->ObjectInformation->FileId.Cell,
pFcb->ObjectInformation->FileId.Vnode,
pFcb->ObjectInformation->FileId.Unique,
iosb.Status,
- iosb.Information);
+ iosb.Information));
try_return( ntStatus = iosb.Status );
}
}
- __except( EXCEPTION_EXECUTE_HANDLER)
+ __except( AFSExceptionFilter( __FUNCTION__, GetExceptionCode(), GetExceptionInformation()))
{
try_return( ntStatus = GetExceptionCode());
}
- AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
- AFS_TRACE_LEVEL_VERBOSE,
- "AFSFlushBuffers Releasing Fcb SectionObject lock %08lX 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)
{
- AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
+ AFSDbgTrace(( AFS_SUBSYSTEM_LOCK_PROCESSING|AFS_SUBSYSTEM_SECTION_OBJECT,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSFlushBuffers Releasing Fcb SectionObject lock %08lX SHARED %08lX\n",
+ "AFSFlushBuffers Releasing Fcb SectionObject lock %p SHARED %08lX\n",
&pFcb->NPFcb->SectionObjectResource,
- PsGetCurrentThread());
+ PsGetCurrentThread()));
AFSReleaseResource( &pFcb->NPFcb->SectionObjectResource);
}