Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Oct 2017 16:38:00 +0000 (UTC)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r324369 - head/sbin/geom/class/part
Message-ID:  <201710061638.v96Gc0OT053542@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marcel
Date: Fri Oct  6 16:38:00 2017
New Revision: 324369
URL: https://svnweb.freebsd.org/changeset/base/324369

Log:
  Fix alignment of 'last' in autofill.
  
  'last' is the sector number of the last usable sector. Sector
  numbers start with 0. As such, 'last' is always 1 less than
  the count of sectors and aligning 'last' down as-is means that
  the number of free sectors is pessimized by 'alignment - 1' if
  the number of usable sectors was already a multiple of the
  alignment. Consequently, gpart(8) failed to create a partition
  when the alignment and size were such that it would extend to
  the end of the disk.

Modified:
  head/sbin/geom/class/part/geom_part.c

Modified: head/sbin/geom/class/part/geom_part.c
==============================================================================
--- head/sbin/geom/class/part/geom_part.c	Fri Oct  6 15:46:11 2017	(r324368)
+++ head/sbin/geom/class/part/geom_part.c	Fri Oct  6 16:38:00 2017	(r324369)
@@ -547,7 +547,7 @@ gpart_autofill(struct gctl_req *req)
 	last = (off_t)strtoimax(s, NULL, 0);
 	grade = ~0ULL;
 	a_first = ALIGNUP(first + offset, alignment);
-	last = ALIGNDOWN(last + offset, alignment);
+	last = ALIGNDOWN(last + offset + 1, alignment) - 1;
 	if (a_first < start)
 		a_first = start;
 	while ((pp = find_provider(gp, first)) != NULL) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201710061638.v96Gc0OT053542>