svn commit: r190463 - head/sys/geom/part

Marcel Moolenaar marcel at FreeBSD.org
Thu Mar 26 22:48:43 PDT 2009


Author: marcel
Date: Fri Mar 27 05:48:42 2009
New Revision: 190463
URL: http://svn.freebsd.org/changeset/base/190463

Log:
  Sharpen the saw:
  o  BSD uses 32-bit block numbers. Limit the scheme to 2^32-1
     blocks when the media is larger.

Modified:
  head/sys/geom/part/g_part_bsd.c

Modified: head/sys/geom/part/g_part_bsd.c
==============================================================================
--- head/sys/geom/part/g_part_bsd.c	Fri Mar 27 05:44:53 2009	(r190462)
+++ head/sys/geom/part/g_part_bsd.c	Fri Mar 27 05:48:42 2009	(r190463)
@@ -192,8 +192,7 @@ g_part_bsd_create(struct g_part_table *b
 	struct g_part_bsd_entry *entry;
 	struct g_part_bsd_table *table;
 	u_char *ptr;
-	uint64_t msize;
-	uint32_t ncyls, secpercyl;
+	uint32_t msize, ncyls, secpercyl;
 
 	pp = gpp->gpp_provider;
 	cp = LIST_FIRST(&pp->consumers);
@@ -203,7 +202,7 @@ g_part_bsd_create(struct g_part_table *b
 	if (BBSIZE % pp->sectorsize)
 		return (ENOTBLK);
 
-	msize = pp->mediasize / pp->sectorsize;
+	msize = MIN(pp->mediasize / pp->sectorsize, 0xffffffff);
 	secpercyl = basetable->gpt_sectors * basetable->gpt_heads;
 	ncyls = msize / secpercyl;
 


More information about the svn-src-head mailing list