diff options
author | pjd <pjd@FreeBSD.org> | 2004-08-28 02:34:10 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2004-08-28 02:34:10 +0000 |
commit | 2d011d467223ef1e78a059515ac9a9364a57df29 (patch) | |
tree | 3cf594645207f61e2ec90305a94eb757c8c63b6a /sbin/geom/class/raid3 | |
parent | bf3acf8f031fada66ba872e0fc0e9d31e7979285 (diff) | |
download | FreeBSD-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.c | 14 |
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)); |