diff options
author | NeilBrown <neilb@suse.de> | 2014-05-22 06:22:58 +0200 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2014-05-22 06:22:58 +0200 |
commit | 06e293d0970e36b1ed049b9d3ccb21a870e9d2eb (patch) | |
tree | 4c02a0185af565fdabd73d23791f0a4e23fab812 /Grow.c | |
parent | DDF: remove some pointless code in validate_geometry (diff) | |
download | mdadm-06e293d0970e36b1ed049b9d3ccb21a870e9d2eb.tar.xz mdadm-06e293d0970e36b1ed049b9d3ccb21a870e9d2eb.zip |
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.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -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); |