Start mdmon during incremental assembly of container

This commit is contained in:
Neil Brown 2008-05-27 09:18:52 +10:00
parent 25dbe93ab4
commit 75aa18b53c
2 changed files with 25 additions and 0 deletions

View File

@ -849,11 +849,35 @@ int Incremental_container(struct supertype *st, char *devname, int verbose,
default:
sysfs_set_str(sra, NULL, "array_state",
"readonly");
/* start mdmon if needed. */
if (mdmon_running(st->container_dev))
signal_mdmon(st->container_dev);
else {
int dn = st->container_dev;
int i;
switch(fork()) {
case 0:
/* FIXME yuk. CLOSE_EXEC?? */
for (i=3; i < 100; i++)
close(i);
execl("./mdmon", "mdmon",
map_dev(dev2major(dn),
dev2minor(dn),
1), NULL);
exit(1);
case -1: fprintf(stderr, Name
": cannot fork. "
"Array remains readonly\n");
return 1;
default: ; /* parent - good */
}
}
break;
}
if (verbose >= 0)
printf("Started %s with %d devices\n",
chosen_name, working);
/* FIXME should have an O_EXCL and wait for read-auto */
} else
if (verbose >= 0)
printf("%s assembled with %d devices but "

View File

@ -2350,6 +2350,7 @@ static int load_super_ddf_all(struct supertype *st, int fd,
st->ss = &super_ddf_container;
st->minor_version = 0;
st->max_devs = 512;
st->container_dev = fd2devnum(fd);
}
return 0;
}