Do not use LCM from stripesize and user specified alignment value.
When user wants have specific alignment - do what user wants. Use stripesize as alignment value in case, when some of gpart's arguments are ommitted for automatic calculation. Suggested by: mav
This commit is contained in:
parent
d3edd193e0
commit
08892bf4bf
@ -341,9 +341,10 @@ gpart_autofill_resize(struct gctl_req *req)
|
|||||||
errc(EXIT_FAILURE, error, "Invalid alignment param");
|
errc(EXIT_FAILURE, error, "Invalid alignment param");
|
||||||
if (alignment == 0)
|
if (alignment == 0)
|
||||||
errx(EXIT_FAILURE, "Invalid alignment param");
|
errx(EXIT_FAILURE, "Invalid alignment param");
|
||||||
|
} else {
|
||||||
lba = pp->lg_stripesize / pp->lg_sectorsize;
|
lba = pp->lg_stripesize / pp->lg_sectorsize;
|
||||||
if (lba > 0)
|
if (lba > 0)
|
||||||
alignment = g_lcm(lba, alignment);
|
alignment = lba;
|
||||||
}
|
}
|
||||||
error = gctl_delete_param(req, "alignment");
|
error = gctl_delete_param(req, "alignment");
|
||||||
if (error)
|
if (error)
|
||||||
@ -491,13 +492,9 @@ gpart_autofill(struct gctl_req *req)
|
|||||||
if (has_size && has_start && !has_alignment)
|
if (has_size && has_start && !has_alignment)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
/*
|
|
||||||
* If stripesize is not zero, then recalculate alignment value.
|
|
||||||
* Use LCM from stripesize and user specified alignment.
|
|
||||||
*/
|
|
||||||
len = pp->lg_stripesize / pp->lg_sectorsize;
|
len = pp->lg_stripesize / pp->lg_sectorsize;
|
||||||
if (len > 0 )
|
if (len > 0 && !has_alignment)
|
||||||
alignment = g_lcm(len, alignment);
|
alignment = len;
|
||||||
|
|
||||||
/* Adjust parameters to stripeoffset */
|
/* Adjust parameters to stripeoffset */
|
||||||
offset = pp->lg_stripeoffset / pp->lg_sectorsize;
|
offset = pp->lg_stripeoffset / pp->lg_sectorsize;
|
||||||
|
Loading…
Reference in New Issue
Block a user