From 09a762db1d881b1679e91900d41046d89e9d98af Mon Sep 17 00:00:00 2001 From: =?utf8?q?G=C3=A9=20van=20Geldorp?= Date: Sun, 1 Jan 2006 10:24:27 +0000 Subject: [PATCH] Revert part of r20493. Created bug 1229 to keep track of the issue. svn path=/trunk/; revision=20499 --- reactos/ntoskrnl/mm/pagefile.c | 25 ++++++++++--------------- reactos/subsys/smss/initpage.c | 4 ++-- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/reactos/ntoskrnl/mm/pagefile.c b/reactos/ntoskrnl/mm/pagefile.c index 91d8beb5689..5cccff87bcf 100644 --- a/reactos/ntoskrnl/mm/pagefile.c +++ b/reactos/ntoskrnl/mm/pagefile.c @@ -16,8 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id$ - * +/* * PROJECT: ReactOS kernel * FILE: ntoskrnl/mm/pagefile.c * PURPOSE: Paging file functions @@ -897,22 +896,18 @@ NtCreatePagingFile(IN PUNICODE_STRING FileName, BytesPerAllocationUnit = FsSizeInformation.SectorsPerAllocationUnit * FsSizeInformation.BytesPerSector; - - /* We have to find a value which is a multiple of both PAGE_SIZE and - BytesPerAllocationUnit */ - SafeInitialSize.u.LowPart = ((SafeInitialSize.u.LowPart + PAGE_SIZE - 1) / - PAGE_SIZE) * PAGE_SIZE; - while (0 != (SafeInitialSize.u.LowPart % BytesPerAllocationUnit) && - SafeInitialSize.u.LowPart <= SafeMaximumSize.u.LowPart - PAGE_SIZE) - { - SafeInitialSize.u.LowPart += PAGE_SIZE; - } - if (0 != (SafeInitialSize.u.LowPart % BytesPerAllocationUnit)) + /* FIXME: If we have 2048 BytesPerAllocationUnit (FAT16 < 128MB) there is + * a problem if the paging file is fragmented. Suppose the first cluster + * of the paging file is cluster 3042 but cluster 3043 is NOT part of the + * paging file but of another file. We can't write a complete page (4096 + * bytes) to the physical location of cluster 3042 then. */ + if (BytesPerAllocationUnit % PAGE_SIZE) { + DPRINT1("BytesPerAllocationUnit %d is not a multiple of PAGE_SIZE %d\n", + BytesPerAllocationUnit, PAGE_SIZE); ZwClose(FileHandle); - return STATUS_ALLOTTED_SPACE_EXCEEDED; + return STATUS_UNSUCCESSFUL; } - ASSERT(0 == (SafeInitialSize.u.LowPart % PAGE_SIZE)); Status = ZwSetInformationFile(FileHandle, &IoStatus, diff --git a/reactos/subsys/smss/initpage.c b/reactos/subsys/smss/initpage.c index bcc79bea773..b957ec3ccb7 100644 --- a/reactos/subsys/smss/initpage.c +++ b/reactos/subsys/smss/initpage.c @@ -225,8 +225,8 @@ SmpPagingFilesQueryRoutine(PWSTR ValueName, 0); if (! NT_SUCCESS(Status)) { - PrintString("Creation of paging file %wZ with size %I64d KB failed (status 0x%x\n", - &FileName, InitialSize.QuadPart / 1024); + PrintString("Creation of paging file %wZ with size %I64d KB failed (status 0x%x)\n", + &FileName, InitialSize.QuadPart / 1024, Status); } Cleanup: -- 2.17.1