update for HEAD-2003091401
[reactos.git] / ntoskrnl / cc / copy.c
index f0685bb..cfbf769 100644 (file)
@@ -39,13 +39,13 @@ CcInitCacheZeroPage(VOID)
    if (!NT_SUCCESS(Status))
    {
        DbgPrint("Can't allocate CcZeroPage.\n");
-       KeBugCheck(0);
+       KEBUGCHECK(0);
    }
    Status = MiZeroPage(CcZeroPage);
    if (!NT_SUCCESS(Status))
    {
        DbgPrint("Can't zero out CcZeroPage.\n");
-       KeBugCheck(0);
+       KEBUGCHECK(0);
    }
 }
 
@@ -196,7 +196,6 @@ ReadCacheSegment(PCACHE_SEGMENT CacheSeg)
 
   if (!NT_SUCCESS(Status) && Status != STATUS_END_OF_FILE)
     {
-      CcRosReleaseCacheSegment(CacheSeg->Bcb, CacheSeg, FALSE, FALSE, FALSE);
       DPRINT1("IoPageRead failed, Status %x\n", Status);
       return Status;
     }
@@ -243,6 +242,9 @@ WriteCacheSegment(PCACHE_SEGMENT CacheSeg)
   return(STATUS_SUCCESS);
 }
 
+/*
+ * @implemented
+ */
 BOOLEAN STDCALL
 CcCopyRead (IN PFILE_OBJECT FileObject,
            IN PLARGE_INTEGER FileOffset,
@@ -268,7 +270,7 @@ CcCopyRead (IN PFILE_OBJECT FileObject,
         FileObject, (ULONG)FileOffset->QuadPart, Length, Wait,
         Buffer, IoStatus);
 
-  Bcb = FileObject->SectionObjectPointers->SharedCacheMap;
+  Bcb = FileObject->SectionObjectPointer->SharedCacheMap;
   ReadOffset = FileOffset->QuadPart;
   
   DPRINT("AllocationSize %d, FileSize %d\n",
@@ -322,6 +324,7 @@ CcCopyRead (IN PFILE_OBJECT FileObject,
            {
              IoStatus->Information = 0;
              IoStatus->Status = Status;
+              CcRosReleaseCacheSegment(Bcb, CacheSeg, FALSE, FALSE, FALSE);
              return FALSE;
            }
        }
@@ -348,6 +351,9 @@ CcCopyRead (IN PFILE_OBJECT FileObject,
   return TRUE;
 }
 
+/*
+ * @implemented
+ */
 BOOLEAN STDCALL
 CcCopyWrite (IN PFILE_OBJECT FileObject,
             IN PLARGE_INTEGER FileOffset,
@@ -369,7 +375,7 @@ CcCopyWrite (IN PFILE_OBJECT FileObject,
          "Length %d, Wait %d, Buffer %x)\n",
           FileObject, (ULONG)FileOffset->QuadPart, Length, Wait, Buffer);
 
-   Bcb = FileObject->SectionObjectPointers->SharedCacheMap;
+   Bcb = FileObject->SectionObjectPointer->SharedCacheMap;
    WriteOffset = (ULONG)FileOffset->QuadPart;
 
    if (!Wait)
@@ -440,6 +446,7 @@ CcCopyWrite (IN PFILE_OBJECT FileObject,
         {
           if (!NT_SUCCESS(ReadCacheSegment(CacheSeg)))
             {
+               CcRosReleaseCacheSegment(Bcb, CacheSeg, FALSE, FALSE, FALSE);
               return FALSE;
             }
         }
@@ -452,6 +459,9 @@ CcCopyWrite (IN PFILE_OBJECT FileObject,
    return(TRUE);
 }
 
+/*
+ * @implemented
+ */
 BOOLEAN STDCALL
 CcZeroData (IN PFILE_OBJECT     FileObject,
            IN PLARGE_INTEGER   StartOffset,
@@ -472,7 +482,7 @@ CcZeroData (IN PFILE_OBJECT     FileObject,
   
   Length = EndOffset->u.LowPart - StartOffset->u.LowPart;
 
-  if (FileObject->SectionObjectPointers->SharedCacheMap == NULL)
+  if (FileObject->SectionObjectPointer->SharedCacheMap == NULL)
     {
       /* File is not cached */
       WriteOffset.QuadPart = StartOffset->QuadPart;
@@ -532,7 +542,7 @@ CcZeroData (IN PFILE_OBJECT     FileObject,
       PHYSICAL_ADDRESS page;
 
       Start = StartOffset->u.LowPart;
-      Bcb = FileObject->SectionObjectPointers->SharedCacheMap;
+      Bcb = FileObject->SectionObjectPointer->SharedCacheMap;
       if (Wait)
        {
           /* testing, if the requested datas are available */