svn commit: r217305 - in head: sbin/geom/class/raid3 sys/geom/raid3
Andrey V. Elsukov
ae at FreeBSD.org
Wed Jan 12 13:55:02 UTC 2011
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);
}
More information about the svn-src-head
mailing list