Author: ae Date: Wed Jan 12 13:55:01 2011 New Revision: 217305 URL: http://svn.freebsd.org/changeset/base/217305
Log: Sector size can not be greater than MAXPHYS. Since GRAID3 calculates sector size from user-specified block size, report to user about big blocksize. PR: kern/147851 MFC after: 1 week Modified: head/sbin/geom/class/raid3/geom_raid3.c head/sys/geom/raid3/g_raid3.c Modified: head/sbin/geom/class/raid3/geom_raid3.c ============================================================================== --- head/sbin/geom/class/raid3/geom_raid3.c Wed Jan 12 13:16:35 2011 (r217304) +++ head/sbin/geom/class/raid3/geom_raid3.c Wed Jan 12 13:55:01 2011 (r217305) @@ -213,6 +213,11 @@ raid3_label(struct gctl_req *req) md.md_sectorsize = sectorsize * (nargs - 2); md.md_mediasize -= (md.md_mediasize % md.md_sectorsize); + if (md.md_sectorsize > MAXPHYS) { + gctl_error(req, "The blocksize is too big."); + return; + } + /* * Clear last sector first, to spoil all components if device exists. */ Modified: head/sys/geom/raid3/g_raid3.c ============================================================================== --- head/sys/geom/raid3/g_raid3.c Wed Jan 12 13:16:35 2011 (r217304) +++ head/sys/geom/raid3/g_raid3.c Wed Jan 12 13:55:01 2011 (r217305) @@ -2913,6 +2913,10 @@ g_raid3_read_metadata(struct g_consumer cp->provider->name); return (error); } + if (md->md_sectorsize > MAXPHYS) { + G_RAID3_DEBUG(0, "The blocksize is too big."); + return (EINVAL); + } return (0); } _______________________________________________ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"