AFSWorkItem *pWorkItem;
BOOLEAN freeWorkItem = TRUE;
AFSDeviceExt *pControlDevExt = NULL;
+ AFSDeviceExt *pRDRDevExt = (AFSDeviceExt *) AFSRDRDeviceObject->DeviceExtension;
LONG lCount;
pControlDevExt = (AFSDeviceExt *)AFSControlDeviceObject->DeviceExtension;
case AFS_WORK_FLUSH_FCB:
{
- ntStatus = AFSFlushExtents( pWorkItem->Specific.Fcb.Fcb,
- &pWorkItem->AuthGroup);
+ if( !BooleanFlagOn( pRDRDevExt->DeviceFlags, AFS_DEVICE_FLAG_DIRECT_SERVICE_IO))
+ {
+ ntStatus = AFSFlushExtents( pWorkItem->Specific.Fcb.Fcb,
+ &pWorkItem->AuthGroup);
- if( !NT_SUCCESS( ntStatus))
- {
+ if( !NT_SUCCESS( ntStatus))
+ {
- AFSReleaseExtentsWithFlush( pWorkItem->Specific.Fcb.Fcb,
- &pWorkItem->AuthGroup,
- FALSE);
- }
+ AFSReleaseExtentsWithFlush( pWorkItem->Specific.Fcb.Fcb,
+ &pWorkItem->AuthGroup,
+ FALSE);
+ }
+ }
- ASSERT( pWorkItem->Specific.Fcb.Fcb->OpenReferenceCount != 0);
+ ASSERT( pWorkItem->Specific.Fcb.Fcb->OpenReferenceCount != 0);
lCount = InterlockedDecrement( &pWorkItem->Specific.Fcb.Fcb->OpenReferenceCount);