diff options
-rw-r--r-- | Create.c | 2 | ||||
-rw-r--r-- | Incremental.c | 2 | ||||
-rw-r--r-- | mdadm.h | 1 | ||||
-rw-r--r-- | util.c | 10 |
4 files changed, 13 insertions, 2 deletions
@@ -767,7 +767,7 @@ 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) { + if (need_mdmon && !env_no_mdmon()) { int dn = st->container_dev; int i; switch(fork()) { diff --git a/Incremental.c b/Incremental.c index 266111a..e9a5457 100644 --- a/Incremental.c +++ b/Incremental.c @@ -838,7 +838,7 @@ int Incremental_container(struct supertype *st, char *devname, int verbose, /* start mdmon if needed. */ if (mdmon_running(st->container_dev)) signal_mdmon(st->container_dev); - else { + else if (!env_no_mdmon()) { int dn = st->container_dev; int i; switch(fork()) { @@ -773,6 +773,7 @@ extern int open_container(int fd); extern int mdmon_running(int devnum); extern int signal_mdmon(int devnum); +extern int env_no_mdmon(void); extern char *devnum2devname(int num); extern int devname2devnum(char *name); @@ -1074,6 +1074,16 @@ int signal_mdmon(int devnum) return 0; } +int env_no_mdmon(void) +{ + char *val = getenv("MDADM_NO_MDMON"); + + if (val && atoi(val) == 1) + return 1; + + return 0; +} + int flush_metadata_updates(struct supertype *st) { |