mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 18:15:11 +00:00
[NTFS] - Fix index entries storing the wrong allocated file size when the file is resident. Fix a typo in a DPRINT.
svn path=/branches/GSoC_2016/NTFS/; revision=75479
This commit is contained in:
parent
92d1f92a61
commit
f2e47474f0
3 changed files with 6 additions and 7 deletions
|
@ -597,7 +597,7 @@ NtfsSetEndOfFile(PNTFS_FCB Fcb,
|
||||||
|
|
||||||
DPRINT("Found record for %wS\n", Fcb->ObjectName);
|
DPRINT("Found record for %wS\n", Fcb->ObjectName);
|
||||||
|
|
||||||
CurrentFileSize.QuadPart = NtfsGetFileSize(DeviceExt, FileRecord, L"", 0, (PULONGLONG)&CurrentFileSize);
|
CurrentFileSize.QuadPart = NtfsGetFileSize(DeviceExt, FileRecord, L"", 0, NULL);
|
||||||
|
|
||||||
// Are we trying to decrease the file size?
|
// Are we trying to decrease the file size?
|
||||||
if (NewFileSize->QuadPart < CurrentFileSize.QuadPart)
|
if (NewFileSize->QuadPart < CurrentFileSize.QuadPart)
|
||||||
|
@ -673,7 +673,7 @@ NtfsSetEndOfFile(PNTFS_FCB Fcb,
|
||||||
FileName.Length = FileNameAttribute->NameLength * sizeof(WCHAR);
|
FileName.Length = FileNameAttribute->NameLength * sizeof(WCHAR);
|
||||||
FileName.MaximumLength = FileName.Length;
|
FileName.MaximumLength = FileName.Length;
|
||||||
|
|
||||||
AllocationSize = ROUND_UP(NewFileSize->QuadPart, Fcb->Vcb->NtfsInfo.BytesPerCluster);
|
AllocationSize = AttributeAllocatedLength(&DataContext->Record);
|
||||||
|
|
||||||
Status = UpdateFileNameRecord(Fcb->Vcb,
|
Status = UpdateFileNameRecord(Fcb->Vcb,
|
||||||
ParentMFTId,
|
ParentMFTId,
|
||||||
|
|
|
@ -173,7 +173,7 @@ AttributeAllocatedLength(PNTFS_ATTR_RECORD AttrRecord)
|
||||||
if (AttrRecord->IsNonResident)
|
if (AttrRecord->IsNonResident)
|
||||||
return AttrRecord->NonResident.AllocatedSize;
|
return AttrRecord->NonResident.AllocatedSize;
|
||||||
else
|
else
|
||||||
return AttrRecord->Resident.ValueLength;
|
return ALIGN_UP_BY(AttrRecord->Resident.ValueLength, ATTR_RECORD_ALIGNMENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -399,7 +399,7 @@ SetAttributeDataLength(PFILE_OBJECT FileObject,
|
||||||
{
|
{
|
||||||
NTSTATUS Status = STATUS_SUCCESS;
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
DPRINT1("SetAttributeDataLenth(%p, %p, %p, %lu, %p, %I64u)\n",
|
DPRINT1("SetAttributeDataLength(%p, %p, %p, %lu, %p, %I64u)\n",
|
||||||
FileObject,
|
FileObject,
|
||||||
Fcb,
|
Fcb,
|
||||||
AttrContext,
|
AttrContext,
|
||||||
|
|
|
@ -432,11 +432,8 @@ NTSTATUS NtfsWriteFile(PDEVICE_EXTENSION DeviceExt,
|
||||||
|
|
||||||
DataSize.QuadPart = WriteOffset + Length;
|
DataSize.QuadPart = WriteOffset + Length;
|
||||||
|
|
||||||
AllocationSize = ROUND_UP(DataSize.QuadPart, Fcb->Vcb->NtfsInfo.BytesPerCluster);
|
|
||||||
|
|
||||||
// set the attribute data length
|
// set the attribute data length
|
||||||
Status = SetAttributeDataLength(FileObject, Fcb, DataContext, AttributeOffset, FileRecord, &DataSize);
|
Status = SetAttributeDataLength(FileObject, Fcb, DataContext, AttributeOffset, FileRecord, &DataSize);
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
ReleaseAttributeContext(DataContext);
|
ReleaseAttributeContext(DataContext);
|
||||||
|
@ -445,6 +442,8 @@ NTSTATUS NtfsWriteFile(PDEVICE_EXTENSION DeviceExt,
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AllocationSize = AttributeAllocatedLength(&DataContext->Record);
|
||||||
|
|
||||||
// now we need to update this file's size in every directory index entry that references it
|
// now we need to update this file's size in every directory index entry that references it
|
||||||
// TODO: put this code in its own function and adapt it to work with every filename / hardlink
|
// TODO: put this code in its own function and adapt it to work with every filename / hardlink
|
||||||
// stored in the file record.
|
// stored in the file record.
|
||||||
|
|
Loading…
Reference in a new issue