summaryrefslogtreecommitdiffstats
path: root/sys/geom/raid3
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2004-08-28 02:34:10 +0000
committerpjd <pjd@FreeBSD.org>2004-08-28 02:34:10 +0000
commit2d011d467223ef1e78a059515ac9a9364a57df29 (patch)
tree3cf594645207f61e2ec90305a94eb757c8c63b6a /sys/geom/raid3
parentbf3acf8f031fada66ba872e0fc0e9d31e7979285 (diff)
downloadFreeBSD-src-2d011d467223ef1e78a059515ac9a9364a57df29.zip
FreeBSD-src-2d011d467223ef1e78a059515ac9a9364a57df29.tar.gz
Warn the user if we are not going to use whole provider space.
Requested by: Michael Handler <handler@grendel.net>
Diffstat (limited to 'sys/geom/raid3')
-rw-r--r--sys/geom/raid3/g_raid3_ctl.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/sys/geom/raid3/g_raid3_ctl.c b/sys/geom/raid3/g_raid3_ctl.c
index 8fa6726..94ec67e 100644
--- a/sys/geom/raid3/g_raid3_ctl.c
+++ b/sys/geom/raid3/g_raid3_ctl.c
@@ -338,6 +338,7 @@ g_raid3_ctl_insert(struct gctl_req *req, struct g_class *mp)
struct g_consumer *cp;
const char *name;
u_char *sector;
+ off_t compsize;
intmax_t *no;
int *hardcode, *nargs, error;
@@ -390,16 +391,23 @@ g_raid3_ctl_insert(struct gctl_req *req, struct g_class *mp)
gctl_error(req, "Invalid provider.");
return;
}
- if ((sc->sc_mediasize / (sc->sc_ndisks - 1)) > pp->mediasize) {
- gctl_error(req, "Provider %s too small.", pp->name);
- return;
- }
if (((sc->sc_sectorsize / (sc->sc_ndisks - 1)) % pp->sectorsize) != 0) {
gctl_error(req,
"Cannot insert provider %s, because of its sector size.",
pp->name);
return;
}
+ compsize = sc->sc_mediasize / (sc->sc_ndisks - 1);
+ if (compsize > pp->mediasize - pp->sectorsize) {
+ gctl_error(req, "Provider %s too small.", pp->name);
+ return;
+ }
+ if (compsize < pp->mediasize - pp->sectorsize) {
+ gctl_error(req,
+ "warning: %s: only %jd bytes from %jd bytes used.",
+ pp->name, (intmax_t)compsize,
+ (intmax_t)(pp->mediasize - pp->sectorsize));
+ }
gp = g_new_geomf(mp, "raid3:insert");
gp->orphan = g_raid3_ctl_insert_orphan;
cp = g_new_consumer(gp);
OpenPOWER on IntegriCloud