Windows: Replace ParentObjectInformation pointer
[openafs.git] / src / WINNT / afsrdr / kernel / lib / AFSRead.cpp
index 5f2da9b..7d2e5b4 100644 (file)
@@ -45,11 +45,10 @@ AFSCachedRead( IN PDEVICE_OBJECT DeviceObject,
                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;
@@ -97,7 +96,7 @@ AFSCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
                 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);
@@ -120,7 +119,7 @@ AFSCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
                     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,
@@ -135,7 +134,7 @@ AFSCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
                 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,
@@ -196,7 +195,6 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
     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;
@@ -206,12 +204,10 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
     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;
@@ -226,7 +222,7 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
             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);
 
@@ -241,7 +237,7 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
             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);
@@ -258,7 +254,7 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
             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);
 
@@ -295,7 +291,7 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
             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);
 
@@ -309,7 +305,7 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
             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());
 
@@ -332,7 +328,7 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
             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());
 
@@ -368,7 +364,7 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
                     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);
 
@@ -436,7 +432,7 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
             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);
 
@@ -445,7 +441,7 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
         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);
@@ -466,7 +462,7 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
                 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);
             }
@@ -510,7 +506,7 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
                 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 );
@@ -538,7 +534,7 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
             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);
 
@@ -550,7 +546,7 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
         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());
 
@@ -566,12 +562,12 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
             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());
 
@@ -625,7 +621,7 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
         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);
 
@@ -634,7 +630,7 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
             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());
 
@@ -661,13 +657,13 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
         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());
 
@@ -680,7 +676,7 @@ AFSNonCachedRead( IN PDEVICE_OBJECT DeviceObject,
 
         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());
 
@@ -709,7 +705,7 @@ 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);
 
@@ -728,7 +724,7 @@ try_exit:
 
             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());
 
@@ -772,6 +768,7 @@ AFSRead( IN PDEVICE_OBJECT LibDeviceObject,
          IN PIRP Irp)
 {
 
+    UNREFERENCED_PARAMETER(LibDeviceObject);
     NTSTATUS ntStatus = STATUS_SUCCESS;
 
     __try
@@ -812,21 +809,21 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
                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;
 
     pIrpSp = IoGetCurrentIrpStackLocation( Irp);
     pDeviceExt = (AFSDeviceExt *)DeviceObject->DeviceExtension;
@@ -856,7 +853,7 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
             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);
@@ -871,7 +868,7 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
             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);
@@ -890,7 +887,7 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
             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);
 
@@ -907,7 +904,7 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
             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,
@@ -923,7 +920,7 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
             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,
@@ -944,7 +941,7 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
             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 );
@@ -955,7 +952,7 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
             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);
@@ -964,9 +961,20 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
         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);
@@ -1000,28 +1008,40 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
             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
@@ -1033,7 +1053,7 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
                 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);
@@ -1046,7 +1066,7 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
             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);
@@ -1061,7 +1081,7 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
             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);
 
@@ -1078,7 +1098,7 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
             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);
         }
@@ -1092,7 +1112,7 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
             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;
@@ -1118,9 +1138,9 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
                     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,
@@ -1132,7 +1152,7 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
                                                pDeviceExt->Specific.RDR.MaximumRPCLength);
 
                     CcSetDirtyPageThreshold( pFileObject,
-                                             AFS_DIRTY_CHUNK_THRESHOLD * pDeviceExt->Specific.RDR.MaximumRPCLength);
+                                             AFS_DIRTY_CHUNK_THRESHOLD * pDeviceExt->Specific.RDR.MaximumRPCLength / 4096);
                 }
                 __except( EXCEPTION_EXECUTE_HANDLER)
                 {
@@ -1141,7 +1161,7 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
                     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);
                 }
@@ -1177,7 +1197,7 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
                     AFSDbgLogMsg( AFS_SUBSYSTEM_IO_PROCESSING,
                                   AFS_TRACE_LEVEL_ERROR,
-                                  "AFSCommonRead (%08lX) Exception thrown during mdl read Status %08lX\n",
+                                  "AFSCommonRead (%p) Exception thrown during mdl read Status %08lX\n",
                                   Irp,
                                   ntStatus);
                 }
@@ -1187,7 +1207,7 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
                     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);
 
@@ -1220,7 +1240,7 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
 
             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);
@@ -1230,9 +1250,33 @@ AFSCommonRead( IN PDEVICE_OBJECT DeviceObject,
         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);
@@ -1244,7 +1288,7 @@ 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);
 
@@ -1254,6 +1298,12 @@ try_exit:
             AFSReleaseResource( &pFcb->NPFcb->PagingResource);
         }
 
+        if( bReleaseSectionObject)
+        {
+
+            AFSReleaseResource( &pFcb->NPFcb->SectionObjectResource);
+        }
+
         if( bReleaseMain)
         {
 
@@ -1277,6 +1327,7 @@ AFSIOCtlRead( IN PDEVICE_OBJECT DeviceObject,
               IN PIRP Irp)
 {
 
+    UNREFERENCED_PARAMETER(DeviceObject);
     NTSTATUS ntStatus = STATUS_SUCCESS;
     AFSPIOCtlIORequestCB stIORequestCB;
     PIO_STACK_LOCATION pIrpSp = IoGetCurrentIrpStackLocation( Irp);
@@ -1308,7 +1359,7 @@ AFSIOCtlRead( IN PDEVICE_OBJECT DeviceObject,
 
         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());
 
@@ -1322,16 +1373,14 @@ AFSIOCtlRead( IN PDEVICE_OBJECT DeviceObject,
         RtlZeroMemory( &stParentFID,
                        sizeof( AFSFileID));
 
-        if( pFcb->ObjectInformation->ParentObjectInformation != NULL)
+        if( BooleanFlagOn( pFcb->ObjectInformation->Flags, AFS_OBJECT_FLAGS_PARENT_FID))
         {
 
             //
             // The parent directory FID of the node
             //
 
-            ASSERT( pFcb->ObjectInformation->ParentObjectInformation->FileType == AFS_FILE_TYPE_DIRECTORY);
-
-            stParentFID = pFcb->ObjectInformation->ParentObjectInformation->FileId;
+            stParentFID = pFcb->ObjectInformation->ParentFileId;
         }
 
         //
@@ -1414,8 +1463,8 @@ AFSShareRead( IN PDEVICE_OBJECT DeviceObject,
               IN PIRP Irp)
 {
 
+    UNREFERENCED_PARAMETER(DeviceObject);
     NTSTATUS ntStatus = STATUS_SUCCESS;
-    AFSPIOCtlIORequestCB stIORequestCB;
     PIO_STACK_LOCATION pIrpSp = IoGetCurrentIrpStackLocation( Irp);
     AFSFcb *pFcb = NULL;
     AFSCcb *pCcb = NULL;
@@ -1498,7 +1547,7 @@ AFSShareRead( IN PDEVICE_OBJECT DeviceObject,
 
             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);