]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - Grow.c
tests, imsm: Set correct expected offset between volumes
[thirdparty/mdadm.git] / Grow.c
diff --git a/Grow.c b/Grow.c
index 3ee015b7d20e136c162b765b0f19f96bb1baf552..30c5fa91c06d7c1b38b342cfbaff5df06645f913 100644 (file)
--- a/Grow.c
+++ b/Grow.c
@@ -242,6 +242,7 @@ int Grow_Add_device(char *devname, int fd, char *newdev)
                if (st->ss->load_super(st, fd2, NULL)) {
                        pr_err("cannot find super block on %s\n", dv);
                        close(fd);
+                       close(fd2);
                        return 1;
                }
                info.array.raid_disks = nd+1;
@@ -1794,6 +1795,11 @@ int Grow_reshape(char *devname, int fd,
                        devname);
                return 1;
        }
+       if (s->level != UnSet && s->chunk) {
+               pr_err("Cannot change array level in the same operation as changing chunk size.\n");
+               return 1;
+       }
+
        if (data_offset != INVALID_SECTORS && array.level != 10 &&
            (array.level < 4 || array.level > 6)) {
                pr_err("--grow --data-offset not yet supported\n");
@@ -1816,7 +1822,7 @@ int Grow_reshape(char *devname, int fd,
        }
 
        if (array.level > 1 && s->size > 1 &&
-           (array.chunk_size / 1024) > (int)s->size) {
+           (unsigned long long) (array.chunk_size / 1024) > s->size) {
                pr_err("component size must be larger than chunk size.\n");
                return 1;
        }