]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
mdmon: add --foreground option
authorNeilBrown <neilb@suse.de>
Tue, 5 Feb 2013 04:57:09 +0000 (15:57 +1100)
committerNeilBrown <neilb@suse.de>
Tue, 5 Feb 2013 04:57:09 +0000 (15:57 +1100)
While not strictly necessary for systemd, it is cleaner to avoid
forking when running from a management daemon.  So add a --foreground
option to mdmon.

Signed-off-by: NeilBrown <neilb@suse.de>
mdmon.8
mdmon.c
systemd/mdmon@.service

diff --git a/mdmon.8 b/mdmon.8
index 559dd903d44df5cca69eafeb7c5ec7c1a7777606..a968cdb031aa8e9e9b2f1f45a710e292eb835b87 100644 (file)
--- a/mdmon.8
+++ b/mdmon.8
@@ -5,7 +5,7 @@ mdmon \- monitor MD external metadata arrays
 
 .SH SYNOPSIS
 
-.BI mdmon " [--all] [--takeover] CONTAINER"
+.BI mdmon " [--all] [--takeover] [--foreground] CONTAINER"
 
 .SH OVERVIEW
 The 2.6.27 kernel brings the ability to support external metadata arrays.
@@ -131,6 +131,14 @@ The
 device to monitor.  It can be a full path like /dev/md/container, or a
 simple md device name like md127.
 .TP
+.B \-\-foreground
+Normally,
+.I mdmon
+will fork and continue in the background.  Adding this option will
+skip that step and run
+.I mdmon
+in the foreground.
+.TP
 .B \-\-takeover
 This instructs
 .I mdmon
diff --git a/mdmon.c b/mdmon.c
index 8720aa539c40c796e3096e34c2d8b36d20be13e8..007071be98ab2b5d8c13055a71468636c6493dce 100644 (file)
--- a/mdmon.c
+++ b/mdmon.c
@@ -288,11 +288,13 @@ int main(int argc, char *argv[])
        int opt;
        int all = 0;
        int takeover = 0;
+       int dofork = 1;
        static struct option options[] = {
                {"all", 0, NULL, 'a'},
                {"takeover", 0, NULL, 't'},
                {"help", 0, NULL, 'h'},
                {"offroot", 0, NULL, OffRootOpt},
+               {"foreground", 0, NULL, 'F'},
                {NULL, 0, NULL, 0}
        };
 
@@ -301,7 +303,7 @@ int main(int argc, char *argv[])
         */
        argv[0][0] = '@';
 
-       while ((opt = getopt_long(argc, argv, "tha", options, NULL)) != -1) {
+       while ((opt = getopt_long(argc, argv, "thaF", options, NULL)) != -1) {
                switch (opt) {
                case 'a':
                        container_name = argv[optind-1];
@@ -310,6 +312,9 @@ int main(int argc, char *argv[])
                case 't':
                        takeover = 1;
                        break;
+               case 'F':
+                       dofork = 0;
+                       break;
                case OffRootOpt:
                        /* silently ignore old option */
                        break;
@@ -381,7 +386,7 @@ int main(int argc, char *argv[])
                        container_name);
                exit(1);
        }
-       return mdmon(devname, devnum, do_fork(), takeover);
+       return mdmon(devname, devnum, dofork && do_fork(), takeover);
 }
 
 static int mdmon(char *devname, int devnum, int must_fork, int takeover)
index ddb475f2a2c37e7b2cb3da3c37153daa42004e03..809f52739580b339995d7bc69fff95849c0675b8 100644 (file)
@@ -11,7 +11,7 @@ DefaultDependencies=no
 Before=initrd-switch-root.target
 
 [Service]
-ExecStart=/sbin/mdmon %I
+ExecStart=/sbin/mdmon --foreground %I
 StandardInput=null
 StandardOutput=null
 StandardError=null