summaryrefslogtreecommitdiff
path: root/Incremental.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2008-07-18 16:37:11 +1000
committerNeilBrown <neilb@suse.de>2008-07-18 16:37:11 +1000
commit8850ee3e1ea01d4ded658fd83002fd93a81d6e99 (patch)
tree3f1a4dc0467a8d3bc8b94c9191b9326aeb676e69 /Incremental.c
parentdaf7a3ce96e517360b0456c3a9cca0771b94462d (diff)
Factor common code into new "start_mdmon".
Signed-off-by: Neil Brown <neilb@suse.de>
Diffstat (limited to 'Incremental.c')
-rw-r--r--Incremental.c25
1 files changed, 3 insertions, 22 deletions
diff --git a/Incremental.c b/Incremental.c
index e9a54578..9b222206 100644
--- a/Incremental.c
+++ b/Incremental.c
@@ -836,28 +836,9 @@ int Incremental_container(struct supertype *st, char *devname, int verbose,
sysfs_set_str(sra, NULL, "array_state",
"readonly");
/* start mdmon if needed. */
- if (mdmon_running(st->container_dev))
- signal_mdmon(st->container_dev);
- else if (!env_no_mdmon()) {
- 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 */
- }
- }
+ if (!mdmon_running(st->container_dev))
+ start_mdmon(st->container_dev);
+ ping_monitor(devnum2devname(st->container_dev));
break;
}
if (verbose >= 0)