diff options
author | NeilBrown <neilb@suse.de> | 2008-07-18 16:37:11 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2008-07-18 16:37:11 +1000 |
commit | 8850ee3e1ea01d4ded658fd83002fd93a81d6e99 (patch) | |
tree | 3f1a4dc0467a8d3bc8b94c9191b9326aeb676e69 /Create.c | |
parent | daf7a3ce96e517360b0456c3a9cca0771b94462d (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.c | 26 |
1 files changed, 4 insertions, 22 deletions
@@ -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 { |