]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - Grow.c
Grow: fix removal of line in wrong case
[thirdparty/mdadm.git] / Grow.c
diff --git a/Grow.c b/Grow.c
index 2af6c96e764a67b6125bea90775342b462f61a45..a2f4f1428787340fb4829398b5d25f17f133a68c 100644 (file)
--- a/Grow.c
+++ b/Grow.c
@@ -940,7 +940,9 @@ int reshape_open_backup_file(char *backup_file,
 
        if (!restart && strncmp(backup_file, MAP_DIR, strlen(MAP_DIR)) != 0) {
                char *bu = make_backup(sys_name);
-               symlink(backup_file, bu);
+               if (symlink(backup_file, bu))
+                       pr_err("Recording backup file in " MAP_DIR "failed: %s\n",
+                              strerror(errno));
                free(bu);
        }
 
@@ -1338,7 +1340,6 @@ char *analyse_change(char *devname, struct mdinfo *info, struct reshape *re)
 
                switch (re->level) {
                case 4:
-                       re->before.layout = 0;
                        re->after.layout = 0;
                        break;
                case 5:
@@ -3472,7 +3473,7 @@ int reshape_container(char *container, char *devname,
         */
        ping_monitor(container);
 
-       if (!forked && !check_env("MDADM_NO_SYSTEMCTL"))
+       if (!forked && !freeze_reshape && !check_env("MDADM_NO_SYSTEMCTL"))
                if (continue_via_systemd(container))
                        return 0;
 
@@ -4950,7 +4951,7 @@ int Grow_continue(int mdfd, struct supertype *st, struct mdinfo *info,
                close(cfd);
                ret_val = reshape_container(st->container_devnm, NULL, mdfd,
                                            st, info, 0, backup_file,
-                                           0, 1,
+                                           0, forked,
                                            1 | info->reshape_active,
                                            freeze_reshape);
        } else