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 /util.c | |
parent | daf7a3ce96e517360b0456c3a9cca0771b94462d (diff) | |
download | mdadm-8850ee3e1ea01d4ded658fd83002fd93a81d6e99.tar.gz mdadm-8850ee3e1ea01d4ded658fd83002fd93a81d6e99.tar.xz mdadm-8850ee3e1ea01d4ded658fd83002fd93a81d6e99.zip |
Factor common code into new "start_mdmon".
Signed-off-by: Neil Brown <neilb@suse.de>
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -1074,6 +1074,31 @@ int signal_mdmon(int devnum) return 0; } +int start_mdmon(int devnum) +{ + int i; + + if (env_no_mdmon()) + return 0; + + switch(fork()) { + case 0: + /* FIXME yuk. CLOSE_EXEC?? */ + for (i=3; i < 100; i++) + close(i); + execl("./mdmon", "mdmon", + map_dev(dev2major(devnum), + dev2minor(devnum), + 1), NULL); + exit(1); + case -1: fprintf(stderr, Name ": cannot run mdmon. " + "Array remains readonly\n"); + return -1; + default: ; /* parent - good */ + } + return 0; +} + int env_no_mdmon(void) { char *val = getenv("MDADM_NO_MDMON"); |