diff options
author | NeilBrown <neilb@suse.de> | 2014-05-20 16:51:56 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2014-05-20 16:51:56 +1000 |
commit | b0140ae83c746d36ff36e2e1375714ae16e0b87b (patch) | |
tree | 15b72d8f574b47f101aca42940b33500277e7d03 /Grow.c | |
parent | 5e76dce1acd906e8fc8af04973c3a129cdc77fd6 (diff) |
Grow: add 'forked' option to reshape_container.
This is a better match for reshape_array() and means that
"mdadm --grow --continue" will run in the foreground, which
makes more sense.
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Grow.c')
-rw-r--r-- | Grow.c | 14 |
1 files changed, 7 insertions, 7 deletions
@@ -1514,8 +1514,8 @@ static int reshape_container(char *container, char *devname, struct supertype *st, struct mdinfo *info, int force, - char *backup_file, - int verbose, int restart, int freeze_reshape); + char *backup_file, int verbose, + int forked, int restart, int freeze_reshape); int Grow_reshape(char *devname, int fd, struct mddev_dev *devlist, @@ -2067,7 +2067,7 @@ size_change_error: * performed at the level of the container */ rv = reshape_container(container, devname, -1, st, &info, - c->force, c->backup_file, c->verbose, 0, 0); + c->force, c->backup_file, c->verbose, 0, 0, 0); frozen = 0; } else { /* get spare devices from external metadata @@ -3448,8 +3448,8 @@ int reshape_container(char *container, char *devname, struct supertype *st, struct mdinfo *info, int force, - char *backup_file, - int verbose, int restart, int freeze_reshape) + char *backup_file, int verbose, + int forked, int restart, int freeze_reshape) { struct mdinfo *cc = NULL; int rv = restart; @@ -3474,7 +3474,7 @@ int reshape_container(char *container, char *devname, */ ping_monitor(container); - switch (fork()) { + switch (forked ? 0 : fork()) { case -1: /* error */ perror("Cannot fork to complete reshape\n"); unfreeze(st); @@ -4948,7 +4948,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, + 0, 1, 1 | info->reshape_active, freeze_reshape); } else |