From 3e23ba9d7bd3c2a9fbddc286014480672763e563 Mon Sep 17 00:00:00 2001 From: Jes Sorensen Date: Fri, 1 Feb 2013 16:15:17 +0100 Subject: [PATCH 1/4] Remove --offroot argument and default to always setting argv[0] to @ We still allow --offroot to be given - for compatibility with scripts - but ignore it. The whole point of --offroot is to get systemd to not auto-kill mdmon, and we always want that. Signed-off-by: Jes Sorensen Signed-off-by: NeilBrown --- ReadMe.c | 4 ---- mdadm.8.in | 11 ----------- mdadm.c | 15 ++++++++------- mdadm.h | 2 -- mdmon.8 | 11 +---------- mdmon.c | 14 ++++++-------- util.c | 13 ++----------- 7 files changed, 17 insertions(+), 53 deletions(-) diff --git a/ReadMe.c b/ReadMe.c index 4214cb0..c4bb730 100644 --- a/ReadMe.c +++ b/ReadMe.c @@ -259,10 +259,6 @@ char OptionHelp[] = " --query -Q : Display general information about how a\n" " device relates to the md driver\n" " --auto-detect : Start arrays auto-detected by the kernel\n" -" --offroot : Set first character of argv[0] to @ to indicate the\n" -" application was launched from initrd/initramfs and\n" -" should not be shutdown by systemd as part of the\n" -" regular shutdown process.\n" ; /* "\n" diff --git a/mdadm.8.in b/mdadm.8.in index c1881cd..a3abc2d 100644 --- a/mdadm.8.in +++ b/mdadm.8.in @@ -255,17 +255,6 @@ Avoid printing purely informative messages. With this, .I mdadm will be silent unless there is something really important to report. -.TP -.BR \-\-offroot -Set first character of argv[0] to @ to indicate mdadm was launched -from initrd/initramfs and should not be shutdown by systemd as part of -the regular shutdown process. This option is normally only used by -the system's initscripts. Please see here for more details on how -systemd handled argv[0]: -.IP -.B http://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons -.PP - .TP .BR \-f ", " \-\-force diff --git a/mdadm.c b/mdadm.c index 26e8cec..f22fd7b 100644 --- a/mdadm.c +++ b/mdadm.c @@ -116,6 +116,13 @@ int main(int argc, char *argv[]) ident.container = NULL; ident.member = NULL; + /* + * set first char of argv[0] to @. This is used by + * systemd to signal that the task was launched from + * initrd/initramfs and should be preserved during shutdown + */ + argv[0][0] = '@'; + while ((option_index = -1) , (opt=getopt_long(argc, argv, shortopt, long_options, @@ -159,14 +166,8 @@ int main(int argc, char *argv[]) homehost = optarg; continue; - /* - * --offroot sets first char of argv[0] to @. This is used - * by systemd to signal that the tast was launched from - * initrd/initramfs and should be preserved during shutdown - */ case OffRootOpt: - argv[0][0] = '@'; - __offroot = 1; + /* Silently ignore old option */ continue; case Prefer: diff --git a/mdadm.h b/mdadm.h index be760d2..a761f29 100644 --- a/mdadm.h +++ b/mdadm.h @@ -1487,5 +1487,3 @@ char *xstrdup(const char *str); * v1.x can support 1920 */ #define MAX_DISKS 4096 - -extern int __offroot; diff --git a/mdmon.8 b/mdmon.8 index 598d904..559dd90 100644 --- a/mdmon.8 +++ b/mdmon.8 @@ -5,7 +5,7 @@ mdmon \- monitor MD external metadata arrays .SH SYNOPSIS -.BI mdmon " [--all] [--takeover] [--offroot] CONTAINER" +.BI mdmon " [--all] [--takeover] CONTAINER" .SH OVERVIEW The 2.6.27 kernel brings the ability to support external metadata arrays. @@ -166,15 +166,6 @@ containers with names longer than 5 characters, this argument can be arbitrarily extended, e.g. to .BR \-\-all-active-arrays . .TP -.BR \-\-offroot -Set first character of argv[0] to @ to indicate mdmon was launched -from initrd/initramfs and should not be shutdown by systemd as part of -the regular shutdown process. This option is normally only used by -the system's initscripts. Please see here for more details on how -systemd handled argv[0]: -.IP -.B http://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons -.PP .PP Note that diff --git a/mdmon.c b/mdmon.c index 5d5ae94..8720aa5 100644 --- a/mdmon.c +++ b/mdmon.c @@ -184,9 +184,6 @@ static void try_kill_monitor(pid_t pid, char *devname, int sock) buf[sizeof(buf)-1] = 0; close(fd); - /* Note that if started with --offroot, the name - * might be "@dmon" - */ if (n < 0 || !(strstr(buf, "mdmon") || strstr(buf, "@dmon"))) return; @@ -276,10 +273,6 @@ void usage(void) " --help -h : This message\n" " --all : All devices\n" " --takeover -t : Takeover container\n" -" --offroot : Set first character of argv[0] to @ to indicate the\n" -" application was launched from initrd/initramfs and\n" -" should not be shutdown by systemd as part of the\n" -" regular shutdown process.\n" ); exit(2); } @@ -303,6 +296,11 @@ int main(int argc, char *argv[]) {NULL, 0, NULL, 0} }; + /* + * Always change process name to @dmon to avoid systemd killing it + */ + argv[0][0] = '@'; + while ((opt = getopt_long(argc, argv, "tha", options, NULL)) != -1) { switch (opt) { case 'a': @@ -313,7 +311,7 @@ int main(int argc, char *argv[]) takeover = 1; break; case OffRootOpt: - argv[0][0] = '@'; + /* silently ignore old option */ break; case 'h': default: diff --git a/util.c b/util.c index fc9043b..e75b754 100644 --- a/util.c +++ b/util.c @@ -32,8 +32,6 @@ #include #include -int __offroot; - /* * following taken from linux/blkpg.h because they aren't * anywhere else and it isn't safe to #include linux/ * stuff. @@ -1674,15 +1672,8 @@ int start_mdmon(int devnum) for (i=0; paths[i]; i++) if (paths[i][0]) { - if (__offroot) { - execl(paths[i], "mdmon", "--offroot", - devnum2devname(devnum), - NULL); - } else { - execl(paths[i], "mdmon", - devnum2devname(devnum), - NULL); - } + execl(paths[i], "mdmon", + devnum2devname(devnum), NULL); } exit(1); case -1: fprintf(stderr, Name ": cannot run mdmon. " -- 1.7.11.7