summaryrefslogtreecommitdiff
path: root/Create.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 /Create.c
parentdaf7a3ce96e517360b0456c3a9cca0771b94462d (diff)
Factor common code into new "start_mdmon".
Signed-off-by: Neil Brown <neilb@suse.de>
Diffstat (limited to 'Create.c')
-rw-r--r--Create.c26
1 files changed, 4 insertions, 22 deletions
diff --git a/Create.c b/Create.c
index b2edc7d6..692a74cc 100644
--- a/Create.c
+++ b/Create.c
@@ -769,28 +769,10 @@ int Create(struct supertype *st, char *mddev, int mdfd,
if (verbose >= 0)
fprintf(stderr, Name ": array %s started.\n", mddev);
if (st->ss->external && st->subarray[0]) {
- if (need_mdmon && !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 */
- }
- } else
- signal_mdmon(st->container_dev);
- /* FIXME wait for mdmon to set array to read-auto */
- sleep(1);
+ if (need_mdmon)
+ start_mdmon(st->container_dev);
+
+ ping_monitor(devnum2devname(st->container_dev));
close(container_fd);
}
} else {