diff options
author | ae <ae@FreeBSD.org> | 2012-05-04 19:49:24 +0000 |
---|---|---|
committer | ae <ae@FreeBSD.org> | 2012-05-04 19:49:24 +0000 |
commit | 3e6d0720decb3c514b152996c21dfffae4c96270 (patch) | |
tree | 891781dfaa8d7895ce54f2db1c5d3b61749f0c56 /sbin | |
parent | 2ed237af622fef414c4b4510da5c0166d48422df (diff) | |
download | FreeBSD-src-3e6d0720decb3c514b152996c21dfffae4c96270.zip FreeBSD-src-3e6d0720decb3c514b152996c21dfffae4c96270.tar.gz |
Don't ignore start offset value when user specifies it together
with alignment.
PR: bin/167567
Tested by: Warren Block
MFC after: 1 week
Diffstat (limited to 'sbin')
-rw-r--r-- | sbin/geom/class/part/geom_part.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sbin/geom/class/part/geom_part.c b/sbin/geom/class/part/geom_part.c index 8296517..8a57ca4 100644 --- a/sbin/geom/class/part/geom_part.c +++ b/sbin/geom/class/part/geom_part.c @@ -507,6 +507,8 @@ gpart_autofill(struct gctl_req *req) grade = ~0ULL; a_first = ALIGNUP(first + offset, alignment); last = ALIGNDOWN(last + offset, alignment); + if (a_first < start) + a_first = start; while ((pp = find_provider(gp, first)) != NULL) { s = find_provcfg(pp, "start"); lba = (off_t)strtoimax(s, NULL, 0); @@ -536,7 +538,8 @@ gpart_autofill(struct gctl_req *req) s = find_provcfg(pp, "end"); first = (off_t)strtoimax(s, NULL, 0) + 1; - a_first = ALIGNUP(first + offset, alignment); + if (first > a_first) + a_first = ALIGNUP(first + offset, alignment); } if (a_first <= last) { /* Free space [first-last] */ |