[NTFS]
authorTrevor Thompson <tmt256@email.vccs.edu>
Thu, 23 Jun 2016 15:37:19 +0000 (15:37 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Sun, 10 Dec 2017 10:13:26 +0000 (11:13 +0100)
Fix Up AddFixupArray - It needs to accept a PNTFS_RECORD_HEADER for parameter 2, not a PFILE_RECORD_HEADER.

svn path=/branches/GSoC_2016/NTFS/; revision=71662

drivers/filesystems/ntfs/mft.c
drivers/filesystems/ntfs/ntfs.h

index a53b37f..7017ab7 100644 (file)
@@ -698,7 +698,7 @@ UpdateFileRecord(PDEVICE_EXTENSION Vcb,
     DPRINT("UpdateFileRecord(%p, %I64x, %p)\n", Vcb, index, file);
 
     // Add the fixup array to prepare the data for writing to disk
-    AddFixupArray(Vcb, file);
+    AddFixupArray(Vcb, &file->Ntfs);
 
     // write the file record to the master file table
     Status = WriteAttribute(Vcb, Vcb->MFTContext, index * Vcb->NtfsInfo.BytesPerFileRecord, (const PUCHAR)file, Vcb->NtfsInfo.BytesPerFileRecord, &BytesWritten);
@@ -747,27 +747,24 @@ FixupUpdateSequenceArray(PDEVICE_EXTENSION Vcb,
 
 NTSTATUS
 AddFixupArray(PDEVICE_EXTENSION Vcb,
-              PFILE_RECORD_HEADER Record)
+              PNTFS_RECORD_HEADER Record)
 {
     USHORT *pShortToFixUp;
-    unsigned int ArrayEntryCount = Record->BytesAllocated / Vcb->NtfsInfo.BytesPerSector;
+    unsigned int ArrayEntryCount = Record->UsaCount - 1;
     unsigned int Offset = Vcb->NtfsInfo.BytesPerSector - 2;
     int i;
 
-    PFIXUP_ARRAY fixupArray = (PFIXUP_ARRAY)((UCHAR*)Record + Record->Ntfs.UsaOffset);
+    PFIXUP_ARRAY fixupArray = (PFIXUP_ARRAY)((UCHAR*)Record + Record->UsaOffset);
 
     DPRINT("AddFixupArray(%p, %p)\n fixupArray->USN: %u, ArrayEntryCount: %u\n", Vcb, Record, fixupArray->USN, ArrayEntryCount);
 
-    if (Record->BytesAllocated % Vcb->NtfsInfo.BytesPerSector != 0)
-        ArrayEntryCount++;
-
     fixupArray->USN++;
 
     for (i = 0; i < ArrayEntryCount; i++)
     {
         DPRINT("USN: %u\tOffset: %u\n", fixupArray->USN, Offset);
 
-        pShortToFixUp = (USHORT*)((UCHAR*)Record + Offset);
+        pShortToFixUp = (USHORT*)((PCHAR)Record + Offset);
         fixupArray->Array[i] = *pShortToFixUp;
         *pShortToFixUp = fixupArray->USN;
         Offset += Vcb->NtfsInfo.BytesPerSector;
index 6b9a86e..9b12a60 100644 (file)
@@ -811,7 +811,7 @@ FixupUpdateSequenceArray(PDEVICE_EXTENSION Vcb,
 
 NTSTATUS
 AddFixupArray(PDEVICE_EXTENSION Vcb,
-    PFILE_RECORD_HEADER Record);
+              PNTFS_RECORD_HEADER Record);
 
 NTSTATUS
 ReadLCN(PDEVICE_EXTENSION Vcb,