]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Improve error message for adding bitmap to a level that cannot support it.
authorNeil Brown <neilb@suse.de>
Mon, 21 May 2007 04:25:47 +0000 (14:25 +1000)
committerNeil Brown <neilb@suse.de>
Mon, 21 May 2007 04:25:47 +0000 (14:25 +1000)
Also give error on --build if no devices given.

Build.c
Create.c
Grow.c
mdadm.c

diff --git a/Build.c b/Build.c
index df9f4f2f5a5585eca174625b7b17c5ff43f0ca4b..1de3596630aa3de9a4bd4e5684039fb0077ea7de 100644 (file)
--- 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;
index 21e578b8bb0b7c4bd9860400f1635e0f5302665b..2a4335a891cf882c7b42ff3367245518aa6887e5 100644 (file)
--- 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 c28c1ac59e9881671b5f07e5c30fc24089b906d9..52907fa0a83934cc352caab6ef26b899cf4e58bf 100644 (file)
--- 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 43620b7163bd17e7be050f763d9bdc3d271aed36..069c6d6dba0e6ec7babef81ea49d2af6ad088513 100644 (file)
--- 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,