Revert part of r20493. Created bug 1229 to keep track of the issue.

svn path=/trunk/; revision=20499
This commit is contained in:
Gé van Geldorp 2006-01-01 10:24:27 +00:00
parent d600323cad
commit 09a762db1d
2 changed files with 12 additions and 17 deletions

View file

@ -16,8 +16,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/* $Id$ /*
*
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
* FILE: ntoskrnl/mm/pagefile.c * FILE: ntoskrnl/mm/pagefile.c
* PURPOSE: Paging file functions * PURPOSE: Paging file functions
@ -897,22 +896,18 @@ NtCreatePagingFile(IN PUNICODE_STRING FileName,
BytesPerAllocationUnit = FsSizeInformation.SectorsPerAllocationUnit * BytesPerAllocationUnit = FsSizeInformation.SectorsPerAllocationUnit *
FsSizeInformation.BytesPerSector; FsSizeInformation.BytesPerSector;
/* FIXME: If we have 2048 BytesPerAllocationUnit (FAT16 < 128MB) there is
/* We have to find a value which is a multiple of both PAGE_SIZE and * a problem if the paging file is fragmented. Suppose the first cluster
BytesPerAllocationUnit */ * of the paging file is cluster 3042 but cluster 3043 is NOT part of the
SafeInitialSize.u.LowPart = ((SafeInitialSize.u.LowPart + PAGE_SIZE - 1) / * paging file but of another file. We can't write a complete page (4096
PAGE_SIZE) * PAGE_SIZE; * bytes) to the physical location of cluster 3042 then. */
while (0 != (SafeInitialSize.u.LowPart % BytesPerAllocationUnit) && if (BytesPerAllocationUnit % PAGE_SIZE)
SafeInitialSize.u.LowPart <= SafeMaximumSize.u.LowPart - PAGE_SIZE)
{
SafeInitialSize.u.LowPart += PAGE_SIZE;
}
if (0 != (SafeInitialSize.u.LowPart % BytesPerAllocationUnit))
{ {
DPRINT1("BytesPerAllocationUnit %d is not a multiple of PAGE_SIZE %d\n",
BytesPerAllocationUnit, PAGE_SIZE);
ZwClose(FileHandle); ZwClose(FileHandle);
return STATUS_ALLOTTED_SPACE_EXCEEDED; return STATUS_UNSUCCESSFUL;
} }
ASSERT(0 == (SafeInitialSize.u.LowPart % PAGE_SIZE));
Status = ZwSetInformationFile(FileHandle, Status = ZwSetInformationFile(FileHandle,
&IoStatus, &IoStatus,

View file

@ -225,8 +225,8 @@ SmpPagingFilesQueryRoutine(PWSTR ValueName,
0); 0);
if (! NT_SUCCESS(Status)) if (! NT_SUCCESS(Status))
{ {
PrintString("Creation of paging file %wZ with size %I64d KB failed (status 0x%x\n", PrintString("Creation of paging file %wZ with size %I64d KB failed (status 0x%x)\n",
&FileName, InitialSize.QuadPart / 1024); &FileName, InitialSize.QuadPart / 1024, Status);
} }
Cleanup: Cleanup: