https://git.reactos.org/?p=reactos.git;a=commitdiff;h=26408b02f14ec4e8e08965421489c72aa5caa094

commit 26408b02f14ec4e8e08965421489c72aa5caa094
Author:     Pierre Schweitzer <[email protected]>
AuthorDate: Sun Nov 11 17:34:35 2018 +0100
Commit:     Pierre Schweitzer <[email protected]>
CommitDate: Sun Nov 11 17:38:37 2018 +0100

    [SETUP] Align partition start at 2048 minimum
    
    This will allow compatibility with modern OSes and
    modern disk management utilities.
    It will also improve performances by properly aligning
    partition start.
    And it will let enough room at the begin of the disk
    for 3rd party bootloaders.
    
    WARNING: this is not compatible with previous partition
    model, and old one will likely not be compatible. You'll
    have to erase your whole partition table and start from
    scratch.
---
 base/setup/lib/utils/partlist.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/base/setup/lib/utils/partlist.c b/base/setup/lib/utils/partlist.c
index 7145b2f10d..0d66b6c87e 100644
--- a/base/setup/lib/utils/partlist.c
+++ b/base/setup/lib/utils/partlist.c
@@ -819,7 +819,10 @@ ScanForUnpartitionedDiskSpace(
         NewPartEntry->DiskEntry = DiskEntry;
 
         NewPartEntry->IsPartitioned = FALSE;
-        NewPartEntry->StartSector.QuadPart = 
(ULONGLONG)DiskEntry->SectorAlignment;
+        if (DiskEntry->SectorAlignment < 2048)
+            NewPartEntry->StartSector.QuadPart = 2048ULL;
+        else
+            NewPartEntry->StartSector.QuadPart = 
(ULONGLONG)DiskEntry->SectorAlignment;
         NewPartEntry->SectorCount.QuadPart = 
AlignDown(DiskEntry->SectorCount.QuadPart, DiskEntry->SectorAlignment) -
                                              
NewPartEntry->StartSector.QuadPart;
 
@@ -837,7 +840,10 @@ ScanForUnpartitionedDiskSpace(
     }
 
     /* Start partition at head 1, cylinder 0 */
-    LastStartSector = DiskEntry->SectorAlignment;
+    if (DiskEntry->SectorAlignment < 2048)
+        LastStartSector = 2048ULL;
+    else
+        LastStartSector = DiskEntry->SectorAlignment;
     LastSectorCount = 0ULL;
     LastUnusedSectorCount = 0ULL;
 

Reply via email to