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>
struct supertype *st,
struct mdinfo *info,
int force,
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,
int Grow_reshape(char *devname, int fd,
struct mddev_dev *devlist,
* performed at the level of the container
*/
rv = reshape_container(container, devname, -1, st, &info,
* 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
frozen = 0;
} else {
/* get spare devices from external metadata
struct supertype *st,
struct mdinfo *info,
int force,
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;
{
struct mdinfo *cc = NULL;
int rv = restart;
*/
ping_monitor(container);
*/
ping_monitor(container);
+ switch (forked ? 0 : fork()) {
case -1: /* error */
perror("Cannot fork to complete reshape\n");
unfreeze(st);
case -1: /* error */
perror("Cannot fork to complete reshape\n");
unfreeze(st);
close(cfd);
ret_val = reshape_container(st->container_devnm, NULL, mdfd,
st, info, 0, backup_file,
close(cfd);
ret_val = reshape_container(st->container_devnm, NULL, mdfd,
st, info, 0, backup_file,
1 | info->reshape_active,
freeze_reshape);
} else
1 | info->reshape_active,
freeze_reshape);
} else