summaryrefslogtreecommitdiff
path: root/Grow.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2014-05-22 14:22:58 +1000
committerNeilBrown <neilb@suse.de>2014-05-22 14:22:58 +1000
commit06e293d0970e36b1ed049b9d3ccb21a870e9d2eb (patch)
tree4c02a0185af565fdabd73d23791f0a4e23fab812 /Grow.c
parent2ecda5a3fa0382c615aebe11111c671357137378 (diff)
Grow: fix resent grow_continue breakage.
Commit 5e76dce1acd906e8fc8af04973c3a129cdc77fd6 changed Grow_continue to assume a fork had already happened, so that mdadm --grow --continue didn't fork. This is good, but it means that if Grow_continue is run from Assemble, then mdadm --assemble .... can misbehave if the array was in the middle of a reshape. So introduce finer control. Grow_continue only assumes it has already forked if run from "mdadm --grow --continue". Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Grow.c')
-rw-r--r--Grow.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/Grow.c b/Grow.c
index a5a9421b..202b6ef4 100644
--- a/Grow.c
+++ b/Grow.c
@@ -4920,7 +4920,7 @@ int Grow_continue_command(char *devname, int fd,
/* continue reshape
*/
- ret_val = Grow_continue(fd, st, content, backup_file, 0);
+ ret_val = Grow_continue(fd, st, content, backup_file, 1, 0);
Grow_continue_command_exit:
if (fd2 > -1)
@@ -4936,7 +4936,7 @@ Grow_continue_command_exit:
}
int Grow_continue(int mdfd, struct supertype *st, struct mdinfo *info,
- char *backup_file, int freeze_reshape)
+ char *backup_file, int forked, int freeze_reshape)
{
int ret_val = 2;
@@ -4959,7 +4959,7 @@ int Grow_continue(int mdfd, struct supertype *st, struct mdinfo *info,
} else
ret_val = reshape_array(NULL, mdfd, "array", st, info, 1,
NULL, INVALID_SECTORS,
- backup_file, 0, 1,
+ backup_file, 0, forked,
1 | info->reshape_active,
freeze_reshape);