IN LARGE_INTEGER StartingByte,
IN ULONG ByteCount)
{
+ UNREFERENCED_PARAMETER(DeviceObject);
NTSTATUS ntStatus = STATUS_SUCCESS;
IO_STACK_LOCATION *pIrpSp = IoGetCurrentIrpStackLocation( Irp);
PFILE_OBJECT pFileObject = pIrpSp->FileObject;
- AFSFcb *pFcb = (AFSFcb *)pFileObject->FsContext;
- AFSCcb *pCcb = (AFSCcb *)pFileObject->FsContext2;
BOOLEAN bSynchronousIo = BooleanFlagOn( pFileObject->Flags, FO_SYNCHRONOUS_IO);
VOID *pSystemBuffer = NULL;
ULONG ulCurrentIO = 0, ulTotalLen = ByteCount;
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSCachedRead (%08lX) Failed to lock system buffer\n",
+ "AFSCachedRead (%p) Failed to lock system buffer\n",
Irp);
try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES);
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSCachedRead (%08lX) Failed CcCopyRead() %wZ @ %0I64X Status %08lX\n",
+ "AFSCachedRead (%p) Failed CcCopyRead() %wZ @ %0I64X Status %08lX\n",
Irp,
&pFileObject->FileName,
liCurrentOffset.QuadPart,
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSCachedRead (%08lX) CcCopyRead() Threw exception %wZ @ %0I64X Status %08lX\n",
+ "AFSCachedRead (%p) CcCopyRead() Threw exception %wZ @ %0I64X Status %08lX\n",
Irp,
&pFileObject->FileName,
liCurrentOffset.QuadPart,
PFILE_OBJECT pFileObject = pIrpSp->FileObject;
AFSFcb *pFcb = (AFSFcb *)pFileObject->FsContext;
AFSCcb *pCcb = (AFSCcb *)pFileObject->FsContext2;
- BOOLEAN bSynchronousIo = IoIsOperationSynchronous(Irp);
VOID *pSystemBuffer = NULL;
BOOLEAN bPagingIo = BooleanFlagOn( Irp->Flags, IRP_PAGING_IO);
BOOLEAN bLocked = FALSE;
ULONG extentsCount = 0, runCount = 0;
AFSExtent *pStartExtent = NULL;
AFSExtent *pIgnoreExtent = NULL;
- BOOLEAN bExtentsMapped = FALSE;
BOOLEAN bCompleteIrp = TRUE;
ULONG ulReadByteCount;
ULONG ulByteCount;
AFSDeviceExt *pDevExt = (AFSDeviceExt *)DeviceObject->DeviceExtension;
- ULONG ulRequestCount = 0;
LARGE_INTEGER liCurrentTime, liLastRequestTime;
AFSDeviceExt *pControlDevExt = (AFSDeviceExt *)AFSControlDeviceObject->DeviceExtension;
PFILE_OBJECT pCacheFileObject = NULL;
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSNonCachedRead (%08lX) Request larger than MaxIO %I64X\n",
+ "AFSNonCachedRead (%p) Request larger than MaxIO %I64X\n",
Irp,
pDevExt->Specific.RDR.MaxIo.QuadPart);
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSNonCachedRead (%08lX) Failed to map system buffer\n",
+ "AFSNonCachedRead (%p) Failed to map system buffer\n",
Irp);
try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES);
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSNonCachedRead (%08lX) Zeroing to EOF zero byte length %08lX\n",
+ "AFSNonCachedRead (%p) Zeroing to EOF zero byte length %08lX\n",
Irp,
zeroCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_EXTENT_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSNonCachedRead (%08lX) Failed to request extents Status %08lX\n",
+ "AFSNonCachedRead (%p) Failed to request extents Status %08lX\n",
Irp,
ntStatus);
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSNonCachedRead Acquiring Fcb extents lock %08lX SHARED %08lX\n",
+ "AFSNonCachedRead Acquiring Fcb extents lock %p SHARED %08lX\n",
&pFcb->NPFcb->Specific.File.ExtentsResource,
PsGetCurrentThread());
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSNonCachedRead Releasing Fcb extents lock %08lX SHARED %08lX\n",
+ "AFSNonCachedRead Releasing Fcb extents lock %p SHARED %08lX\n",
&pFcb->NPFcb->Specific.File.ExtentsResource,
PsGetCurrentThread());
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSNonCachedRead (%08lX) Failed to request extents Status %08lX\n",
+ "AFSNonCachedRead (%p) Failed to request extents Status %08lX\n",
Irp,
ntStatus);
AFSDbgLogMsg( AFS_SUBSYSTEM_EXTENT_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSNonCachedRead (%08lX) Failed to retrieve mapped extents Status %08lX\n",
+ "AFSNonCachedRead (%p) Failed to retrieve mapped extents Status %08lX\n",
Irp,
ntStatus);
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSNonCachedRead (%08lX) Successfully retrieved map extents count %08lX run count %08lX\n",
+ "AFSNonCachedRead (%p) Successfully retrieved map extents count %d run count %d\n",
Irp,
extentsCount,
runCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSNonCachedRead (%08lX) Failed to process extent run for non-persistent cache Status %08lX\n",
+ "AFSNonCachedRead (%p) Failed to process extent run for non-persistent cache Status %08lX\n",
Irp,
ntStatus);
}
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSNonCachedRead (%08lX) Failed to allocate IO run block\n",
+ "AFSNonCachedRead (%p) Failed to allocate IO run block\n",
Irp);
try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES );
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSNonCachedRead (%08lX) Failed to initialize IO run block Status %08lX\n",
+ "AFSNonCachedRead (%p) Failed to initialize IO run block Status %08lX\n",
Irp,
ntStatus);
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSNonCachedRead Releasing Fcb extents lock %08lX SHARED %08lX\n",
+ "AFSNonCachedRead Releasing Fcb extents lock %p SHARED %08lX\n",
&pFcb->NPFcb->Specific.File.ExtentsResource,
PsGetCurrentThread());
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSNonCachedRead (%08lX) Failed to allocate IO gather block\n",
+ "AFSNonCachedRead (%p) Failed to allocate IO gather block\n",
Irp);
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSNonCachedRead Acquiring(2) Fcb extents lock %08lX SHARED %08lX\n",
+ "AFSNonCachedRead Acquiring(2) Fcb extents lock %p SHARED %08lX\n",
&pFcb->NPFcb->Specific.File.ExtentsResource,
PsGetCurrentThread());
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSNonCachedRead (%08lX) AFSStartIos completed Status %08lX\n",
+ "AFSNonCachedRead (%p) AFSStartIos completed Status %08lX\n",
Irp,
ntStatus);
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSNonCachedRead Acquiring(3) Fcb extents lock %08lX SHARED %08lX\n",
+ "AFSNonCachedRead Acquiring(3) Fcb extents lock %p SHARED %08lX\n",
&pFcb->NPFcb->Specific.File.ExtentsResource,
PsGetCurrentThread());
ntStatus = pGatherIo->Status;
-#if 0
- //
- // Setup the MD5 for each extent
- //
-
- AFSSetupMD5Hash( pFcb,
- pStartExtent,
- extentsCount,
- pSystemBuffer,
- &StartingByte,
- ulReadByteCount);
-#endif
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSNonCachedRead (%08lX) AFSStartIos wait completed Status %08lX\n",
+ "AFSNonCachedRead (%p) AFSStartIos wait completed Status %08lX\n",
Irp,
ntStatus);
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSNonCachedRead Acquiring(4) Fcb extents lock %08lX SHARED %08lX\n",
+ "AFSNonCachedRead Acquiring(4) Fcb extents lock %p SHARED %08lX\n",
&pFcb->NPFcb->Specific.File.ExtentsResource,
PsGetCurrentThread());
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSNonCachedRead Releasing Fcb extents lock %08lX SHARED %08lX\n",
+ "AFSNonCachedRead Releasing Fcb extents lock %p SHARED %08lX\n",
&pFcb->NPFcb->Specific.File.ExtentsResource,
PsGetCurrentThread());
// The data is there now. Give back the extents now so the service
// has some in hand
//
- (VOID) AFSReleaseExtentsWithFlush( pFcb,
- &pCcb->AuthGroup);
+
+ if ( pFcb->Specific.File.ExtentLength > 4096)
+ {
+
+ (VOID) AFSReleaseExtentsWithFlush( pFcb,
+ &pCcb->AuthGroup,
+ FALSE);
+ }
try_exit:
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSNonCachedRead (%08lX) Completed request Status %08lX\n",
+ "AFSNonCachedRead (%p) Completed request Status %08lX\n",
Irp,
ntStatus);
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSNonCachedRead Releasing Fcb extents lock %08lX SHARED %08lX\n",
+ "AFSNonCachedRead Releasing Fcb extents lock %p SHARED %08lX\n",
&pFcb->NPFcb->Specific.File.ExtentsResource,
PsGetCurrentThread());
if (pGatherIo)
{
- AFSExFreePool(pGatherIo);
+ AFSExFreePoolWithTag(pGatherIo, AFS_GATHER_TAG);
}
if (NULL != pIoRuns && stIoRuns != pIoRuns)
{
- AFSExFreePool(pIoRuns);
+ AFSExFreePoolWithTag(pIoRuns, AFS_IO_RUN_TAG);
}
if (bCompleteIrp)
IN PIRP Irp)
{
+ UNREFERENCED_PARAMETER(LibDeviceObject);
NTSTATUS ntStatus = STATUS_SUCCESS;
__try
ntStatus = AFSCommonRead( AFSRDRDeviceObject, Irp, NULL);
}
- __except( AFSExceptionFilter( GetExceptionCode(), GetExceptionInformation()) )
+ __except( AFSExceptionFilter( __FUNCTION__, GetExceptionCode(), GetExceptionInformation()) )
{
ntStatus = STATUS_INSUFFICIENT_RESOURCES;
+
+ AFSDumpTraceFilesFnc();
}
return ntStatus;
// Description:
//
// This function is a slightly widened Dispatch handler for the
-// AFS Read function. The thrid parameter is FALSE if we were called
-// at our dispatch point and TRUE if we have been posted.
+// AFS Read function. The third parameter is NULL if we were called
+// at our dispatch point and a process handle if we have been posted.
//
// After doing the obvious (completing MDL writes and so forth)
// we then post, or not.
IN HANDLE OnBehalfOf)
{
+ UNREFERENCED_PARAMETER(OnBehalfOf);
NTSTATUS ntStatus = STATUS_SUCCESS;
AFSDeviceExt *pDeviceExt;
IO_STACK_LOCATION *pIrpSp;
AFSFcb *pFcb = NULL;
AFSCcb *pCcb = NULL;
BOOLEAN bReleaseMain = FALSE;
+ BOOLEAN bReleaseSectionObject = FALSE;
BOOLEAN bReleasePaging = FALSE;
BOOLEAN bPagingIo = FALSE;
BOOLEAN bNonCachedIo = FALSE;
BOOLEAN bCompleteIrp = TRUE;
- BOOLEAN bMapped;
PFILE_OBJECT pFileObject = NULL;
LARGE_INTEGER liStartingByte;
ULONG ulByteCount;
- VOID *pSystemBuffer = NULL;
- HANDLE hCallingUser = NULL;
pIrpSp = IoGetCurrentIrpStackLocation( Irp);
pDeviceExt = (AFSDeviceExt *)DeviceObject->DeviceExtension;
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
AFS_TRACE_LEVEL_WARNING,
- "AFSCommonRead (%08lX) Open request after shutdown\n",
+ "AFSCommonRead (%p) Open request after shutdown\n",
Irp);
try_return( ntStatus = STATUS_TOO_LATE);
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSCommonRead Attempted read (%08lX) when pFcb == NULL\n",
+ "AFSCommonRead Attempted read (%p) when pFcb == NULL\n",
Irp);
try_return( ntStatus = STATUS_INVALID_DEVICE_REQUEST);
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSCommonRead Attempted read (%08lX) on an invalid node type %08lX\n",
+ "AFSCommonRead Attempted read (%p) on an invalid node type %08lX\n",
Irp,
pFcb->Header.NodeTypeCode);
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCommonRead (%08lX) Processing file (PIOCTL) Offset %I64X Length %08lX Irp Flags %08lX\n",
+ "AFSCommonRead (%p) Processing file (PIOCTL) Offset %I64X Length %08lX Irp Flags %08lX\n",
Irp,
liStartingByte.QuadPart,
ulByteCount,
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCommonRead (%08lX) Processing file (SHARE) Offset %I64X Length %08lX Irp Flags %08lX\n",
+ "AFSCommonRead (%p) Processing file (SHARE) Offset %I64X Length %08lX Irp Flags %08lX\n",
Irp,
liStartingByte.QuadPart,
ulByteCount,
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSCommonRead (%08lX) Request failed due to AFS cache closed\n",
+ "AFSCommonRead (%p) Request failed due to AFS cache closed\n",
Irp);
try_return( ntStatus = STATUS_TOO_LATE );
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCommonRead (%08lX) Request completed due to zero length\n",
+ "AFSCommonRead (%p) Request completed due to zero length\n",
Irp);
try_return( ntStatus);
if ( FlagOn(pIrpSp->MinorFunction, IRP_MN_COMPLETE) )
{
+ AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSCommonRead Acquiring Fcb SectionObject lock %p SHARED %08lX\n",
+ &pFcb->NPFcb->SectionObjectResource,
+ PsGetCurrentThread());
+
+ AFSAcquireShared( &pFcb->NPFcb->SectionObjectResource,
+ TRUE);
+
+ bReleaseSectionObject = TRUE;
+
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCommonRead (%08lX) IRP_MN_COMPLETE being processed\n",
+ "AFSCommonRead (%p) IRP_MN_COMPLETE being processed\n",
Irp);
CcMdlReadComplete(pIrpSp->FileObject, Irp->MdlAddress);
}
//
- // Setup the calling process
- //
-
- if( NULL == OnBehalfOf)
- {
-
- hCallingUser = PsGetCurrentProcessId();
- }
- else
- {
-
- hCallingUser = OnBehalfOf;
- }
-
- //
// We acquire the main/paging resource first to synchronize
// against size checks.
//
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCommonRead Acquiring Fcb PagingIo lock %08lX SHARED %08lX\n",
- &pFcb->NPFcb->PagingResource,
- PsGetCurrentThread());
+ "AFSCommonRead Acquiring Fcb PagingIo lock %p SHARED %08lX\n",
+ &pFcb->NPFcb->PagingResource,
+ PsGetCurrentThread());
AFSAcquireShared( &pFcb->NPFcb->PagingResource,
TRUE);
bReleasePaging = TRUE;
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSCommonRead Acquiring Fcb SectionObject lock %p SHARED %08lX\n",
+ &pFcb->NPFcb->SectionObjectResource,
+ PsGetCurrentThread());
+
+ AFSAcquireShared( &pFcb->NPFcb->SectionObjectResource,
+ TRUE);
+
+ bReleaseSectionObject = TRUE;
+
}
else
{
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCommonRead Acquiring Fcb lock %08lX SHARED %08lX\n",
- &pFcb->NPFcb->Resource,
- PsGetCurrentThread());
+ "AFSCommonRead Acquiring Fcb SectionObject lock %p SHARED %08lX\n",
+ &pFcb->NPFcb->SectionObjectResource,
+ PsGetCurrentThread());
- AFSAcquireShared( &pFcb->NPFcb->Resource,
+ AFSAcquireShared( &pFcb->NPFcb->SectionObjectResource,
TRUE);
- bReleaseMain = TRUE;
+ bReleaseSectionObject = TRUE;
//
// Check the BR locks
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSCommonRead (%08lX) Request failed due to lock conflict\n",
+ "AFSCommonRead (%p) Request failed due to lock conflict\n",
Irp);
try_return( ntStatus = STATUS_FILE_LOCK_CONFLICT);
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSCommonRead (%08lX) Request failed due to file deleted\n",
+ "AFSCommonRead (%p) Request failed due to file deleted\n",
Irp);
try_return( ntStatus = STATUS_FILE_DELETED);
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCommonRead (%08lX) Request beyond EOF %I64X\n",
+ "AFSCommonRead (%p) Request beyond EOF %I64X\n",
Irp,
pFcb->Header.FileSize.QuadPart);
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCommonRead (%08lX) Truncated read request to %08lX\n",
+ "AFSCommonRead (%p) Truncated read request to %08lX\n",
Irp,
ulByteCount);
}
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSCommonRead (%08lX) Failing request due to INVALID fcb\n",
+ "AFSCommonRead (%p) Failing request due to INVALID fcb\n",
Irp);
Irp->IoStatus.Information = 0;
}
//
- // Save off the PID if this is not a paging IO
- //
-#if 0
- if( !bPagingIo &&
- ( pFcb->Specific.File.ExtentProcessId == 0 ||
- ( PsGetCurrentProcessId() != AFSSysProcess &&
- pFcb->Specific.File.ExtentProcessId != (ULONGLONG)PsGetCurrentProcessId())))
- {
-
- pFcb->Specific.File.ExtentProcessId = (ULONGLONG)PsGetCurrentProcessId();
-
- if( pFcb->Specific.File.ExtentProcessId == (ULONGLONG)AFSSysProcess)
- {
- AFSDbgLogMsg( AFS_SUBSYSTEM_EXTENT_PROCESSING,
- AFS_TRACE_LEVEL_WARNING,
- "%s Setting ExtentProcessId to system process for Fcb %p\n",
- __FUNCTION__,
- pFcb);
- }
-
- pFcb->Specific.File.ExtentThreadId = (ULONGLONG)PsGetCurrentThreadId();
- }
-#endif
-
- //
- // If this is going to be posted OR this is a cached read,
- // then ask for the extents before we post.
- //
- /*
- if( !bPagingIo && !bNonCachedIo)
- {
-
- ntStatus = AFSRequestExtentsAsync( pFcb, pCcb, &liStartingByte, ulByteCount);
-
- if (!NT_SUCCESS(ntStatus))
- {
-
- AFSDbgLogMsg( AFS_SUBSYSTEM_EXTENT_PROCESSING,
- AFS_TRACE_LEVEL_ERROR,
- "AFSCommonRead (%08lX) Failed to request extents Status %08lX\n",
- Irp,
- ntStatus);
-
- try_return( ntStatus );
- }
- }
- */
-
- //
// If this is an cached IO
//
if( (!bPagingIo && !bNonCachedIo))
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCommonRead Initialize caching on Fcb %08lX FO %08lX\n",
- pFcb,
- pFileObject);
+ "AFSCommonRead Initialize caching on Fcb %p FO %p\n",
+ pFcb,
+ pFileObject);
CcInitializeCacheMap( pFileObject,
(PCC_FILE_SIZES)&pFcb->Header.AllocationSize,
pFcb);
CcSetReadAheadGranularity( pFileObject,
- READ_AHEAD_GRANULARITY);
+ pDeviceExt->Specific.RDR.MaximumRPCLength);
+
+ CcSetDirtyPageThreshold( pFileObject,
+ AFS_DIRTY_CHUNK_THRESHOLD * pDeviceExt->Specific.RDR.MaximumRPCLength);
}
__except( EXCEPTION_EXECUTE_HANDLER)
{
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSCommonRead (%08lX) Exception thrown while initializing cache map Status %08lX\n",
+ "AFSCommonRead (%p) Exception thrown while initializing cache map Status %08lX\n",
Irp,
ntStatus);
}
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSCachedWrite (%08lX) Exception thrown during mdl read Status %08lX\n",
+ "AFSCommonRead (%p) Exception thrown during mdl read Status %08lX\n",
Irp,
ntStatus);
}
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSCommonRead (%08lX) Failed to process MDL read Status %08lX\n",
+ "AFSCommonRead (%p) Failed to process MDL read Status %08lX\n",
Irp,
ntStatus);
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCommonRead (%08lX) Processing CACHED request Offset %I64X Len %08lX\n",
+ "AFSCommonRead (%p) Processing CACHED request Offset %I64X Len %08lX\n",
Irp,
liStartingByte.QuadPart,
ulByteCount);
else
{
+ if( bReleasePaging)
+ {
+
+ AFSReleaseResource( &pFcb->NPFcb->PagingResource);
+
+ bReleasePaging = FALSE;
+ }
+
+ if( bReleaseSectionObject)
+ {
+
+ AFSReleaseResource( &pFcb->NPFcb->SectionObjectResource);
+
+ bReleaseSectionObject = FALSE;
+ }
+
+ if( bReleaseMain)
+ {
+
+ AFSReleaseResource( &pFcb->NPFcb->Resource);
+
+ bReleaseMain = FALSE;
+ }
+
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCommonRead (%08lX) Processing NON-CACHED request Offset %I64X Len %08lX\n",
+ "AFSCommonRead (%p) Processing NON-CACHED request Offset %I64X Len %08lX\n",
Irp,
liStartingByte.QuadPart,
ulByteCount);
ntStatus = AFSNonCachedRead( DeviceObject, Irp, liStartingByte);
}
- //
- // We won't do this for now in read processing ...
-
-#if 0
- //
- // Queue up a flush
- //
-
- if( pFcb->Specific.File.ExtentsDirtyCount > 0 ||
- pFcb->Specific.File.ExtentLength > 1500)
- {
-
- AFSQueueFlushExtents( pFcb,
- &pCcb->AuthGroup);
- }
-#endif
-
try_exit:
AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCommonRead (%08lX) Process complete Status %08lX\n",
+ "AFSCommonRead (%p) Process complete Status %08lX\n",
Irp,
ntStatus);
AFSReleaseResource( &pFcb->NPFcb->PagingResource);
}
+ if( bReleaseSectionObject)
+ {
+
+ AFSReleaseResource( &pFcb->NPFcb->SectionObjectResource);
+ }
+
if( bReleaseMain)
{
IN PIRP Irp)
{
+ UNREFERENCED_PARAMETER(DeviceObject);
NTSTATUS ntStatus = STATUS_SUCCESS;
AFSPIOCtlIORequestCB stIORequestCB;
PIO_STACK_LOCATION pIrpSp = IoGetCurrentIrpStackLocation( Irp);
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSIOCtlRead Acquiring Fcb lock %08lX SHARED %08lX\n",
+ "AFSIOCtlRead Acquiring Fcb lock %p SHARED %08lX\n",
&pFcb->NPFcb->Resource,
PsGetCurrentThread());
IN PIRP Irp)
{
+ UNREFERENCED_PARAMETER(DeviceObject);
NTSTATUS ntStatus = STATUS_SUCCESS;
- AFSPIOCtlIORequestCB stIORequestCB;
PIO_STACK_LOCATION pIrpSp = IoGetCurrentIrpStackLocation( Irp);
AFSFcb *pFcb = NULL;
AFSCcb *pCcb = NULL;
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
- "AFSShareRead (%08lX) Failed service read Status %08lX\n",
+ "AFSShareRead (%p) Failed service read Status %08lX\n",
Irp,
ntStatus);