]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - Grow.c
imsm: validate multiple ppls during assemble
[thirdparty/mdadm.git] / Grow.c
diff --git a/Grow.c b/Grow.c
index 534ba801999838b0b3b61c452f8f61807deb1379..bab1eec1f705d30ccff4ead0d4f1e0e83d8384ef 100644 (file)
--- a/Grow.c
+++ b/Grow.c
@@ -1816,6 +1816,12 @@ int Grow_reshape(char *devname, int fd,
                return 1;
        }
 
+       if (array.level > 1 &&
+          (array.chunk_size / 1024) > (int)s->size) {
+               pr_err("component size must be larger than chunk size.\n");
+               return 1;
+       }
+
        st = super_by_fd(fd, &subarray);
        if (!st) {
                pr_err("Unable to determine metadata format for %s\n", devname);
@@ -3003,9 +3009,9 @@ static int continue_via_systemd(char *devnm)
                snprintf(pathbuf, sizeof(pathbuf), "mdadm-grow-continue@%s.service",
                         devnm);
                status = execl("/usr/bin/systemctl", "systemctl",
-                              "start",
+                              "restart",
                               pathbuf, NULL);
-               status = execl("/bin/systemctl", "systemctl", "start",
+               status = execl("/bin/systemctl", "systemctl", "restart",
                               pathbuf, NULL);
                exit(1);
        case -1: /* Just do it ourselves. */