diff options
author | marcel <marcel@FreeBSD.org> | 2009-03-30 01:03:58 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2009-03-30 01:03:58 +0000 |
commit | 80c869f5c8e7d844b0df6e513c0e1552583f2749 (patch) | |
tree | bd3d146fd1bf40fb7c5e056b10050590e1a3d839 /sys/geom | |
parent | 658fba6dacb297008f126780a018b71c2e1f98c2 (diff) | |
download | FreeBSD-src-80c869f5c8e7d844b0df6e513c0e1552583f2749.zip FreeBSD-src-80c869f5c8e7d844b0df6e513c0e1552583f2749.tar.gz |
Sharpen the saw:
o PC98 uses 32-bit block numbers. Limit the scheme to 2^32-1
blocks when the media is larger. The 32-bit block numbers
are implicit (16-bit cylinder * 8-bit head * 8-bit sector).
Diffstat (limited to 'sys/geom')
-rw-r--r-- | sys/geom/part/g_part_pc98.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/sys/geom/part/g_part_pc98.c b/sys/geom/part/g_part_pc98.c index f9be0cc..8857f9b 100644 --- a/sys/geom/part/g_part_pc98.c +++ b/sys/geom/part/g_part_pc98.c @@ -218,8 +218,7 @@ g_part_pc98_create(struct g_part_table *basetable, struct g_part_parms *gpp) struct g_consumer *cp; struct g_provider *pp; struct g_part_pc98_table *table; - uint64_t msize; - uint32_t cyl; + uint32_t cyl, msize; pp = gpp->gpp_provider; cp = LIST_FIRST(&pp->consumers); @@ -231,7 +230,7 @@ g_part_pc98_create(struct g_part_table *basetable, struct g_part_parms *gpp) cyl = basetable->gpt_heads * basetable->gpt_sectors; - msize = pp->mediasize / SECSIZE; + msize = MIN(pp->mediasize / SECSIZE, 0xffffffff); basetable->gpt_first = cyl; basetable->gpt_last = msize - (msize % cyl) - 1; |