char *backup_file, int quiet, int forked,
int restart, int freeze_reshape);
static int reshape_container(char *container, char *devname,
+ int mdfd,
struct supertype *st,
struct mdinfo *info,
int force,
* number of devices (On-Line Capacity Expansion) must be
* performed at the level of the container
*/
- rv = reshape_container(container, devname, st, &info,
+ rv = reshape_container(container, devname, -1, st, &info,
force, backup_file, quiet, 0, 0);
frozen = 0;
} else {
return 1;
}
+/* mdfd handle is passed to be closed in child process (after fork).
+ */
int reshape_container(char *container, char *devname,
+ int mdfd,
struct supertype *st,
struct mdinfo *info,
int force,
break;
}
+ /* close unused handle in child process
+ */
+ if (mdfd > -1)
+ close(mdfd);
+
while(1) {
/* For each member array with reshape_active,
* we need to perform the reshape.
fmt_devname(container, st->container_dev);
st->ss->load_container(st, cfd, container);
close(cfd);
- ret_val = reshape_container(container, NULL,
+ ret_val = reshape_container(container, NULL, mdfd,
st, info, 0, backup_file,
0, 1, freeze_reshape);
} else