Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Mar 2009 05:48:42 +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: r190463 - head/sys/geom/part
Message-ID:  <200903270548.n2R5mgmS049436@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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;
 



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