summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Create.c2
-rw-r--r--Incremental.c2
-rw-r--r--mdadm.h1
-rw-r--r--util.c10
4 files changed, 13 insertions, 2 deletions
diff --git a/Create.c b/Create.c
index bef221a..c51b7eb 100644
--- a/Create.c
+++ b/Create.c
@@ -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()) {
diff --git a/mdadm.h b/mdadm.h
index 72104da..3672bc9 100644
--- a/mdadm.h
+++ b/mdadm.h
@@ -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);
diff --git a/util.c b/util.c
index 0c1dfee..283eeb6 100644
--- a/util.c
+++ b/util.c
@@ -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)
{