mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 17:34:57 +00:00
Use the calculated cluster/offset pair if we extend a file.
svn path=/trunk/; revision=19690
This commit is contained in:
parent
2229e54a12
commit
0c068e7775
1 changed files with 24 additions and 11 deletions
|
@ -581,28 +581,41 @@ VfatSetAllocationSizeInformation(PFILE_OBJECT FileObject,
|
|||
}
|
||||
else
|
||||
{
|
||||
if (Fcb->LastCluster > 0 &&
|
||||
(Fcb->RFCB.AllocationSize.u.LowPart - ClusterSize) > Fcb->LastOffset)
|
||||
if (Fcb->LastCluster > 0)
|
||||
{
|
||||
if (Fcb->RFCB.AllocationSize.u.LowPart - ClusterSize == Fcb->LastOffset)
|
||||
{
|
||||
Cluster = Fcb->LastCluster;
|
||||
Status = STATUS_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
Status = OffsetToCluster(DeviceExt, Fcb->LastCluster,
|
||||
Fcb->RFCB.AllocationSize.u.LowPart -
|
||||
ClusterSize - Fcb->LastOffset,
|
||||
Fcb->RFCB.AllocationSize.u.LowPart - ClusterSize - Fcb->LastOffset,
|
||||
&Cluster, FALSE);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Status = OffsetToCluster(DeviceExt, FirstCluster,
|
||||
Fcb->RFCB.AllocationSize.u.LowPart - ClusterSize,
|
||||
&Cluster, FALSE);
|
||||
}
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
return Status;
|
||||
}
|
||||
|
||||
if (Fcb->LastCluster == 0)
|
||||
{
|
||||
Fcb->LastCluster = Cluster;
|
||||
Fcb->LastOffset = Fcb->RFCB.AllocationSize.u.LowPart - ClusterSize;
|
||||
}
|
||||
|
||||
/* FIXME: Check status */
|
||||
/* Cluster points now to the last cluster within the chain */
|
||||
Status = OffsetToCluster(DeviceExt, FirstCluster,
|
||||
ROUND_DOWN(NewSize - 1, ClusterSize),
|
||||
Status = OffsetToCluster(DeviceExt, Cluster,
|
||||
ROUND_DOWN(NewSize - 1, ClusterSize) - Fcb->LastOffset,
|
||||
&NCluster, TRUE);
|
||||
if (NCluster == 0xffffffff || !NT_SUCCESS(Status))
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue