branch update for HEAD-2003050101
[reactos.git] / ntoskrnl / cc / copy.c
index 93bf41e..1005885 100644 (file)
@@ -242,7 +242,7 @@ WriteCacheSegment(PCACHE_SEGMENT CacheSeg)
      KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL);
      Status = IoStatus.Status;
   }
-  if (!NT_SUCCESS(Status))
+  if (!NT_SUCCESS(Status) && (Status != STATUS_END_OF_FILE))
     {
       DPRINT1("IoPageWrite failed, Status %x\n", Status);
       CacheSeg->Dirty = TRUE;
@@ -276,7 +276,7 @@ CcCopyRead (IN PFILE_OBJECT FileObject,
         FileObject, (ULONG)FileOffset->QuadPart, Length, Wait,
         Buffer, IoStatus);
 
-  Bcb = ((REACTOS_COMMON_FCB_HEADER*)FileObject->FsContext)->Bcb;
+  Bcb = FileObject->SectionObjectPointers->SharedCacheMap;
   ReadOffset = FileOffset->QuadPart;
   
   DPRINT("AllocationSize %d, FileSize %d\n",
@@ -377,7 +377,7 @@ CcCopyWrite (IN PFILE_OBJECT FileObject,
          "Length %d, Wait %d, Buffer %x)\n",
           FileObject, (ULONG)FileOffset->QuadPart, Length, Wait, Buffer);
 
-   Bcb = ((REACTOS_COMMON_FCB_HEADER*)FileObject->FsContext)->Bcb;
+   Bcb = FileObject->SectionObjectPointers->SharedCacheMap;
    WriteOffset = (ULONG)FileOffset->QuadPart;
 
    if (!Wait)
@@ -480,9 +480,6 @@ CcZeroData (IN PFILE_OBJECT     FileObject,
   
   Length = EndOffset->u.LowPart - StartOffset->u.LowPart;
 
-  /* 
-   * FIXME: NT uses the shared cache map field for cached/non cached detection
-   */
   if (FileObject->SectionObjectPointers->SharedCacheMap == NULL)
     {
       /* File is not cached */
@@ -543,7 +540,7 @@ CcZeroData (IN PFILE_OBJECT     FileObject,
       PHYSICAL_ADDRESS page;
 
       Start = StartOffset->u.LowPart;
-      Bcb = ((REACTOS_COMMON_FCB_HEADER*)FileObject->FsContext)->Bcb;
+      Bcb = FileObject->SectionObjectPointers->SharedCacheMap;
       if (Wait)
        {
           /* testing, if the requested datas are available */