From: Dan Williams Date: Mon, 14 Jul 2008 21:59:32 +0000 (-0700) Subject: mdadm: add an environment variable to prevent auto-launching mdmon X-Git-Tag: mdadm-3.0-devel1~111 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5dcfcb715d91f7d2f45afaaabb93ad311e384ea6;p=thirdparty%2Fmdadm.git mdadm: add an environment variable to prevent auto-launching mdmon Useful for attaching gdb to mdmon before any action is taken on the array. Signed-off-by: Dan Williams --- diff --git a/Create.c b/Create.c index bef221ad..c51b7eb0 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 266111ae..e9a54578 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 72104da1..3672bc9d 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 0c1dfeeb..283eeb6d 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) {