summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2007-05-21 14:25:47 +1000
committerNeil Brown <neilb@suse.de>2007-05-21 14:25:47 +1000
commit5b28bd56725371d4a72988d4e72bb2fd852c6fa7 (patch)
tree9920caeae7cd911d759d4f71e8bc8600be0a10e4
parent1f48664b8e65cafa65d121bb626649a6310cfaf2 (diff)
downloadmdadm-5b28bd56725371d4a72988d4e72bb2fd852c6fa7.tar.gz
mdadm-5b28bd56725371d4a72988d4e72bb2fd852c6fa7.tar.xz
mdadm-5b28bd56725371d4a72988d4e72bb2fd852c6fa7.zip
Improve error message for adding bitmap to a level that cannot support it.
Also give error on --build if no devices given.
-rw-r--r--Build.c6
-rw-r--r--Create.c10
-rw-r--r--Grow.c5
-rw-r--r--mdadm.c10
4 files changed, 26 insertions, 5 deletions
diff --git a/Build.c b/Build.c
index df9f4f2..1de3596 100644
--- a/Build.c
+++ b/Build.c
@@ -146,6 +146,12 @@ int Build(char *mddev, int mdfd, int chunk, int level, int layout,
fprintf(stderr, Name ": bitmaps not supported with this kernel\n");
return 1;
}
+
+ if (bitmap_file && level <= 0) {
+ fprintf(stderr, Name ": bitmaps not meaningful with level %s\n",
+ map_num(pers, level)?:"given");
+ return 1;
+ }
/* now add the devices */
for ((i=0), (dv = devlist) ; dv ; i++, dv=dv->next) {
unsigned long long dsize;
diff --git a/Create.c b/Create.c
index 21e578b..2a4335a 100644
--- a/Create.c
+++ b/Create.c
@@ -87,11 +87,6 @@ int Create(struct supertype *st, char *mddev, int mdfd,
Name ": a RAID level is needed to create an array.\n");
return 1;
}
- if (raiddisks < 1) {
- fprintf(stderr,
- Name ": a number of --raid-devices must be given to create an array\n");
- return 1;
- }
if (raiddisks < 4 && level == 6) {
fprintf(stderr,
Name ": at least 4 raid-devices needed for level 6\n");
@@ -115,6 +110,11 @@ int Create(struct supertype *st, char *mddev, int mdfd,
fprintf(stderr, Name ": You haven't given enough devices (real or missing) to create this array\n");
return 1;
}
+ if (bitmap_file && level <= 0) {
+ fprintf(stderr, Name ": bitmaps not meaningful with level %s\n",
+ map_num(pers, level)?:"given");
+ return 1;
+ }
/* now set some defaults */
if (layout == UnSet)
diff --git a/Grow.c b/Grow.c
index c28c1ac..52907fa 100644
--- a/Grow.c
+++ b/Grow.c
@@ -254,6 +254,11 @@ int Grow_addbitmap(char *devname, int fd, char *file, int chunk, int delay, int
devname);
return 1;
}
+ if (array.level <= 0) {
+ fprintf(stderr, Name ": Bitmaps not meaningful with level %s\n",
+ map_num(pers, array.level)?:"of this array");
+ return 1;
+ }
bitmapsize = array.size;
bitmapsize <<= 1;
if (get_dev_size(fd, NULL, &array_size) &&
diff --git a/mdadm.c b/mdadm.c
index 43620b7..069c6d6 100644
--- a/mdadm.c
+++ b/mdadm.c
@@ -1141,6 +1141,11 @@ int main(int argc, char *argv[])
rv = 1;
break;
}
+ if (raiddisks == 0) {
+ fprintf(stderr, Name ": no raid-disks specified.\n");
+ rv = 1;
+ break;
+ }
if (bitmap_file) {
if (strcmp(bitmap_file, "internal")==0) {
@@ -1160,6 +1165,11 @@ int main(int argc, char *argv[])
rv = 1;
break;
}
+ if (raiddisks == 0) {
+ fprintf(stderr, Name ": no raid-disks specified.\n");
+ rv = 1;
+ break;
+ }
rv = Create(ss, devlist->devname, mdfd, chunk, level, layout, size<0 ? 0 : size,
raiddisks, sparedisks, ident.name, homehost,