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.
This commit is contained in:
Mikhail Vorobyov 2017-11-09 06:37:28 +03:00 committed by Karel Zak
parent 42ee788268
commit 45ce148778
1 changed files with 13 additions and 14 deletions

View File

@ -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++) {