summaryrefslogtreecommitdiffstats
path: root/sbin/geom/class/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 /sbin/geom/class/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 'sbin/geom/class/raid3')
-rw-r--r--sbin/geom/class/raid3/geom_raid3.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/sbin/geom/class/raid3/geom_raid3.c b/sbin/geom/class/raid3/geom_raid3.c
index 8e507ec..1d948b4 100644
--- a/sbin/geom/class/raid3/geom_raid3.c
+++ b/sbin/geom/class/raid3/geom_raid3.c
@@ -149,8 +149,8 @@ raid3_label(struct gctl_req *req)
char param[16];
int *hardcode, *nargs, *noautosync, *round_robin, *verify;
int error, i;
- unsigned sectorsize;
- off_t mediasize;
+ unsigned sectorsize, ssize;
+ off_t mediasize, msize;
nargs = gctl_get_paraml(req, "nargs", sizeof(*nargs));
if (nargs == NULL) {
@@ -222,9 +222,6 @@ raid3_label(struct gctl_req *req)
mediasize = 0;
sectorsize = 0;
for (i = 1; i < *nargs; i++) {
- unsigned ssize;
- off_t msize;
-
snprintf(param, sizeof(param), "arg%u", i);
str = gctl_get_asciiparam(req, param);
@@ -268,6 +265,13 @@ raid3_label(struct gctl_req *req)
snprintf(param, sizeof(param), "arg%u", i);
str = gctl_get_asciiparam(req, param);
+ msize = g_get_mediasize(str) - g_get_sectorsize(str);
+ if (mediasize < msize) {
+ fprintf(stderr,
+ "warning: %s: only %jd bytes from %jd bytes used.\n",
+ str, (intmax_t)mediasize, (intmax_t)msize);
+ }
+
md.md_no = i - 1;
if (!*hardcode)
bzero(md.md_provider, sizeof(md.md_provider));
OpenPOWER on IntegriCloud