From aa4523d2801608e68fd7b6c3ba770b33957fa351 Mon Sep 17 00:00:00 2001 From: Mikhail Vorobyov Date: Thu, 9 Nov 2017 06:37:28 +0300 Subject: [PATCH] libfdisk: (sun) move aligning of the first sector before availability check So it will check a sector which would be actualy used as the first sector of the partition. --- libfdisk/src/sun.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/libfdisk/src/sun.c b/libfdisk/src/sun.c index d10fea0d7b..7ffd364f46 100644 --- a/libfdisk/src/sun.c +++ b/libfdisk/src/sun.c @@ -566,6 +566,19 @@ static int sun_add_partition( if (fdisk_use_cylinders(cxt)) first *= fdisk_get_units_per_sector(cxt); + if (!fdisk_use_cylinders(cxt)) { + /* Starting sector has to be properly aligned */ + int cs = cxt->geom.heads * cxt->geom.sectors; + int x = first % cs; + + if (x) { + fdisk_info(cxt, _("Aligning the first sector from %u to %u " + "to be on cylinder boundary."), + first, first + cs - x); + first += cs - x; + } + } + /* ewt asks to add: "don't start a partition at cyl 0" However, edmundo@rano.demon.co.uk writes: "In addition to having a Sun partition table, to be able to @@ -593,20 +606,6 @@ static int sun_add_partition( } } - - if (!fdisk_use_cylinders(cxt)) { - /* Starting sector has to be properly aligned */ - int cs = cxt->geom.heads * cxt->geom.sectors; - int x = first % cs; - - if (x) { - fdisk_info(cxt, _("Aligning the first sector from %u to %u " - "to be on cylinder boundary."), - first, first + cs - x); - first += cs - x; - } - } - stop = cxt->geom.cylinders * cxt->geom.heads * cxt->geom.sectors; /* ancient */ stop2 = stop; for (i = 0; i < cxt->label->nparts_max; i++) { -- 2.47.2