Update to mdadm-3.3.1
Resolves bz#1105136 Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
This commit is contained in:
		
							parent
							
								
									e77c97f845
								
							
						
					
					
						commit
						e444603605
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -16,3 +16,4 @@ clog | |||||||
| /mdadm-3.2.5.tar.xz | /mdadm-3.2.5.tar.xz | ||||||
| /mdadm-3.2.6.tar.xz | /mdadm-3.2.6.tar.xz | ||||||
| /mdadm-3.3.tar.xz | /mdadm-3.3.tar.xz | ||||||
|  | /mdadm-3.3.1.tar.xz | ||||||
|  | |||||||
| @ -1,108 +0,0 @@ | |||||||
| From 0f7bdf8946316548500858303549e396655450c5 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Jes Sorensen <Jes.Sorensen@redhat.com> |  | ||||||
| Date: Fri, 1 Feb 2013 16:15:18 +0100 |  | ||||||
| Subject: [PATCH 2/4] Add support for launching mdmon via systemctl instead of |  | ||||||
|  fork/exec |  | ||||||
| 
 |  | ||||||
| If launching mdmon via systemctl fails, we fall back to the old method |  | ||||||
| of fork/exec. This allows for having mdmon launched via systemctl |  | ||||||
| which avoids problems with it getting killed by systemd due to it |  | ||||||
| ending up in the parent's cgroup (udev). |  | ||||||
| 
 |  | ||||||
| Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> |  | ||||||
| Signed-off-by: NeilBrown <neilb@suse.de> |  | ||||||
| ---
 |  | ||||||
|  Makefile               |  4 ++++ |  | ||||||
|  systemd/mdmon@.service | 18 ++++++++++++++++++ |  | ||||||
|  util.c                 | 28 ++++++++++++++++++++++++++++ |  | ||||||
|  3 files changed, 50 insertions(+) |  | ||||||
|  create mode 100644 systemd/mdmon@.service |  | ||||||
| 
 |  | ||||||
| diff --git a/Makefile b/Makefile
 |  | ||||||
| index b9787d6..b6edb23 100644
 |  | ||||||
| --- a/Makefile
 |  | ||||||
| +++ b/Makefile
 |  | ||||||
| @@ -73,6 +73,7 @@ MAP_PATH = $(MAP_DIR)/$(MAP_FILE)
 |  | ||||||
|  MDMON_DIR = $(MAP_DIR) |  | ||||||
|  # place for autoreplace cookies |  | ||||||
|  FAILED_SLOTS_DIR = /run/mdadm/failed-slots |  | ||||||
| +SYSTEMD_DIR=/lib/systemd/system
 |  | ||||||
|  DIRFLAGS = -DMAP_DIR=\"$(MAP_DIR)\" -DMAP_FILE=\"$(MAP_FILE)\" |  | ||||||
|  DIRFLAGS += -DMDMON_DIR=\"$(MDMON_DIR)\" |  | ||||||
|  DIRFLAGS += -DFAILED_SLOTS_DIR=\"$(FAILED_SLOTS_DIR)\" |  | ||||||
| @@ -264,6 +265,9 @@ install-man: mdadm.8 md.4 mdadm.conf.5 mdmon.8
 |  | ||||||
|  install-udev: udev-md-raid.rules |  | ||||||
|  	$(INSTALL) -D -m 644 udev-md-raid.rules $(DESTDIR)$(UDEVDIR)/rules.d/64-md-raid.rules |  | ||||||
|   |  | ||||||
| +install-systemd: systemd/mdmon@.service
 |  | ||||||
| +	$(INSTALL) -D -m 644 systemd/mdmon@.service $(DESTDIR)$(SYSTEMD_DIR)/mdmon@.service
 |  | ||||||
| +
 |  | ||||||
|  uninstall: |  | ||||||
|  	rm -f $(DESTDIR)$(MAN8DIR)/mdadm.8 $(DESTDIR)$(MAN8DIR)/mdmon.8 $(DESTDIR)$(MAN4DIR)/md.4 $(DESTDIR)$(MAN5DIR)/mdadm.conf.5 $(DESTDIR)$(BINDIR)/mdadm |  | ||||||
|   |  | ||||||
| diff --git a/systemd/mdmon@.service b/systemd/mdmon@.service
 |  | ||||||
| new file mode 100644 |  | ||||||
| index 0000000..ddb475f
 |  | ||||||
| --- /dev/null
 |  | ||||||
| +++ b/systemd/mdmon@.service
 |  | ||||||
| @@ -0,0 +1,18 @@
 |  | ||||||
| +#  This file is part of mdadm.
 |  | ||||||
| +#
 |  | ||||||
| +#  mdadm is free software; you can redistribute it and/or modify it
 |  | ||||||
| +#  under the terms of the GNU General Public License as published by
 |  | ||||||
| +#  the Free Software Foundation; either version 2 of the License, or
 |  | ||||||
| +#  (at your option) any later version.
 |  | ||||||
| +
 |  | ||||||
| +[Unit]
 |  | ||||||
| +Description=MD Metadata Monitor on /dev/%I
 |  | ||||||
| +DefaultDependencies=no
 |  | ||||||
| +Before=initrd-switch-root.target
 |  | ||||||
| +
 |  | ||||||
| +[Service]
 |  | ||||||
| +ExecStart=/sbin/mdmon %I
 |  | ||||||
| +StandardInput=null
 |  | ||||||
| +StandardOutput=null
 |  | ||||||
| +StandardError=null
 |  | ||||||
| +KillMode=none
 |  | ||||||
| diff --git a/util.c b/util.c
 |  | ||||||
| index e75b754..01af0b5 100644
 |  | ||||||
| --- a/util.c
 |  | ||||||
| +++ b/util.c
 |  | ||||||
| @@ -1660,6 +1660,34 @@ int start_mdmon(int devnum)
 |  | ||||||
|  	} else |  | ||||||
|  		pathbuf[0] = '\0'; |  | ||||||
|   |  | ||||||
| +	/* First try to run systemctl */
 |  | ||||||
| +	switch(fork()) {
 |  | ||||||
| +	case 0:
 |  | ||||||
| +		/* FIXME yuk. CLOSE_EXEC?? */
 |  | ||||||
| +		skipped = 0;
 |  | ||||||
| +		for (i = 3; skipped < 20; i++)
 |  | ||||||
| +			if (close(i) < 0)
 |  | ||||||
| +				skipped++;
 |  | ||||||
| +			else
 |  | ||||||
| +				skipped = 0;
 |  | ||||||
| +
 |  | ||||||
| +		snprintf(pathbuf, sizeof(pathbuf), "mdmon@%s.service",
 |  | ||||||
| +			 devnum2devname(devnum));
 |  | ||||||
| +		status = execl("/usr/bin/systemctl", "systemctl", "start",
 |  | ||||||
| +			       pathbuf, NULL);
 |  | ||||||
| +		status = execl("/bin/systemctl", "systemctl", "start",
 |  | ||||||
| +			       pathbuf, NULL);
 |  | ||||||
| +		exit(1);
 |  | ||||||
| +	case -1: fprintf(stderr, Name "cannot run mdmon. "
 |  | ||||||
| +			 "Array remains readonly\n");
 |  | ||||||
| +		return -1;
 |  | ||||||
| +	default: /* parent - good */
 |  | ||||||
| +		pid = wait(&status);
 |  | ||||||
| +		if (pid >= 0 && status == 0)
 |  | ||||||
| +			return 0;
 |  | ||||||
| +	}
 |  | ||||||
| +
 |  | ||||||
| +	/* That failed, try running mdmon directly */
 |  | ||||||
|  	switch(fork()) { |  | ||||||
|  	case 0: |  | ||||||
|  		/* FIXME yuk. CLOSE_EXEC?? */ |  | ||||||
| -- 
 |  | ||||||
| 1.7.11.7 |  | ||||||
| 
 |  | ||||||
| @ -1,32 +0,0 @@ | |||||||
| From 15c10423aa9435ed72bd292fecca69224a20fdc8 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Jes Sorensen <Jes.Sorensen@redhat.com> |  | ||||||
| Date: Fri, 1 Feb 2013 16:15:19 +0100 |  | ||||||
| Subject: [PATCH 3/4] In case launching mdmon fails, print an error message |  | ||||||
|  before exiting |  | ||||||
| 
 |  | ||||||
| Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> |  | ||||||
| Signed-off-by: NeilBrown <neilb@suse.de> |  | ||||||
| ---
 |  | ||||||
|  util.c | 5 ++++- |  | ||||||
|  1 file changed, 4 insertions(+), 1 deletion(-) |  | ||||||
| 
 |  | ||||||
| diff --git a/util.c b/util.c
 |  | ||||||
| index 01af0b5..8817a3e 100644
 |  | ||||||
| --- a/util.c
 |  | ||||||
| +++ b/util.c
 |  | ||||||
| @@ -1709,8 +1709,11 @@ int start_mdmon(int devnum)
 |  | ||||||
|  		return -1; |  | ||||||
|  	default: /* parent - good */ |  | ||||||
|  		pid = wait(&status); |  | ||||||
| -		if (pid < 0 || status != 0)
 |  | ||||||
| +		if (pid < 0 || status != 0) {
 |  | ||||||
| +			fprintf(stderr, Name "failed to launch mdmon. "
 |  | ||||||
| +			       "Array remains readonly\n");
 |  | ||||||
|  			return -1; |  | ||||||
| +		}
 |  | ||||||
|  	} |  | ||||||
|  	return 0; |  | ||||||
|  } |  | ||||||
| -- 
 |  | ||||||
| 1.7.11.7 |  | ||||||
| 
 |  | ||||||
| @ -1,214 +0,0 @@ | |||||||
| From 3e23ba9d7bd3c2a9fbddc286014480672763e563 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Jes Sorensen <Jes.Sorensen@redhat.com> |  | ||||||
| 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 <Jes.Sorensen@redhat.com> |  | ||||||
| Signed-off-by: NeilBrown <neilb@suse.de> |  | ||||||
| ---
 |  | ||||||
|  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	<dirent.h> |  | ||||||
|  #include	<signal.h> |  | ||||||
|   |  | ||||||
| -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 |  | ||||||
| 
 |  | ||||||
| @ -1,106 +0,0 @@ | |||||||
| From 030419821fb77f9955f2017b4a6d3d8139d6db25 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: NeilBrown <neilb@suse.de> |  | ||||||
| Date: Tue, 5 Feb 2013 15:57:09 +1100 |  | ||||||
| Subject: [PATCH 4/4] mdmon: add --foreground option |  | ||||||
| 
 |  | ||||||
| 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                | 10 +++++++++- |  | ||||||
|  mdmon.c                |  9 +++++++-- |  | ||||||
|  systemd/mdmon@.service |  2 +- |  | ||||||
|  3 files changed, 17 insertions(+), 4 deletions(-) |  | ||||||
| 
 |  | ||||||
| diff --git a/mdmon.8 b/mdmon.8
 |  | ||||||
| index 559dd90..a968cdb 100644
 |  | ||||||
| --- 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 8720aa5..007071b 100644
 |  | ||||||
| --- 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) |  | ||||||
| diff --git a/systemd/mdmon@.service b/systemd/mdmon@.service
 |  | ||||||
| index ddb475f..809f527 100644
 |  | ||||||
| --- a/systemd/mdmon@.service
 |  | ||||||
| +++ b/systemd/mdmon@.service
 |  | ||||||
| @@ -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 |  | ||||||
| -- 
 |  | ||||||
| 1.7.11.7 |  | ||||||
| 
 |  | ||||||
| @ -1,59 +0,0 @@ | |||||||
| From f2d6b478f7e171fc23d364dde2d5e059909bcc71 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Jes Sorensen <Jes.Sorensen@redhat.com> |  | ||||||
| Date: Thu, 10 Oct 2013 09:17:49 +0200 |  | ||||||
| Subject: [PATCH 1/1] Be consistent in return types from byteswap macros |  | ||||||
| 
 |  | ||||||
| The bswap_*() macros return int values. Make sure we return the |  | ||||||
| equivalent types in same byteorder pass-through functions to avoid |  | ||||||
| problems with the original type leaking through to printf() etc. |  | ||||||
| 
 |  | ||||||
| Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> |  | ||||||
| ---
 |  | ||||||
|  mdadm.h | 24 ++++++++++++------------ |  | ||||||
|  1 file changed, 12 insertions(+), 12 deletions(-) |  | ||||||
| 
 |  | ||||||
| diff --git a/mdadm.h b/mdadm.h
 |  | ||||||
| index c90fe10..cb207c9 100644
 |  | ||||||
| --- a/mdadm.h
 |  | ||||||
| +++ b/mdadm.h
 |  | ||||||
| @@ -129,12 +129,12 @@ extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
 |  | ||||||
|   |  | ||||||
|  #if !defined(__KLIBC__) |  | ||||||
|  #if BYTE_ORDER == LITTLE_ENDIAN |  | ||||||
| -#define	__cpu_to_le16(_x) (_x)
 |  | ||||||
| -#define __cpu_to_le32(_x) (_x)
 |  | ||||||
| -#define __cpu_to_le64(_x) (_x)
 |  | ||||||
| -#define	__le16_to_cpu(_x) (_x)
 |  | ||||||
| -#define __le32_to_cpu(_x) (_x)
 |  | ||||||
| -#define __le64_to_cpu(_x) (_x)
 |  | ||||||
| +#define	__cpu_to_le16(_x) (unsigned int)(_x)
 |  | ||||||
| +#define __cpu_to_le32(_x) (unsigned int)(_x)
 |  | ||||||
| +#define __cpu_to_le64(_x) (unsigned long long)(_x)
 |  | ||||||
| +#define	__le16_to_cpu(_x) (unsigned int)(_x)
 |  | ||||||
| +#define __le32_to_cpu(_x) (unsigned int)(_x)
 |  | ||||||
| +#define __le64_to_cpu(_x) (unsigned long long)(_x)
 |  | ||||||
|   |  | ||||||
|  #define	__cpu_to_be16(_x) bswap_16(_x) |  | ||||||
|  #define __cpu_to_be32(_x) bswap_32(_x) |  | ||||||
| @@ -150,12 +150,12 @@ extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
 |  | ||||||
|  #define __le32_to_cpu(_x) bswap_32(_x) |  | ||||||
|  #define __le64_to_cpu(_x) bswap_64(_x) |  | ||||||
|   |  | ||||||
| -#define	__cpu_to_be16(_x) (_x)
 |  | ||||||
| -#define __cpu_to_be32(_x) (_x)
 |  | ||||||
| -#define __cpu_to_be64(_x) (_x)
 |  | ||||||
| -#define	__be16_to_cpu(_x) (_x)
 |  | ||||||
| -#define __be32_to_cpu(_x) (_x)
 |  | ||||||
| -#define __be64_to_cpu(_x) (_x)
 |  | ||||||
| +#define	__cpu_to_be16(_x) (unsigned int)(_x)
 |  | ||||||
| +#define __cpu_to_be32(_x) (unsigned int)(_x)
 |  | ||||||
| +#define __cpu_to_be64(_x) (unsigned long long)(_x)
 |  | ||||||
| +#define	__be16_to_cpu(_x) (unsigned int)(_x)
 |  | ||||||
| +#define __be32_to_cpu(_x) (unsigned int)(_x)
 |  | ||||||
| +#define __be64_to_cpu(_x) (unsigned long long)(_x)
 |  | ||||||
|  #else |  | ||||||
|  #  error "unknown endianness." |  | ||||||
|  #endif |  | ||||||
| -- 
 |  | ||||||
| 1.8.3.1 |  | ||||||
| 
 |  | ||||||
| @ -1,27 +1,13 @@ | |||||||
| --- mdadm-3.3rc1/udev-md-raid-assembly.rules.udev	2013-04-22 17:24:22.000000000 +0200
 | --- mdadm-3.3.1/udev-md-raid-assembly.rules~	2014-06-10 13:29:41.192829830 +0200
 | ||||||
| +++ mdadm-3.3rc1/udev-md-raid-assembly.rules	2013-06-28 14:59:58.092070982 +0200
 | +++ mdadm-3.3.1/udev-md-raid-assembly.rules	2014-06-10 13:30:20.838613208 +0200
 | ||||||
| @@ -4,16 +4,18 @@
 | @@ -5,6 +5,10 @@
 | ||||||
|   |  ENV{ANACONDA}=="?*", GOTO="md_inc_end" | ||||||
|  SUBSYSTEM!="block", GOTO="md_inc_end" |  # assemble md arrays | ||||||
|   |   | ||||||
| +# In Fedora we handle the raid components in 65-md-incremental.rules so that
 | +# In Fedora we handle the raid components in 65-md-incremental.rules so that
 | ||||||
| +# we can do things like honor anaconda command line options and such
 | +# we can do things like honor anaconda command line options and such
 | ||||||
|  | +GOTO="md_inc_end"
 | ||||||
|  | +
 | ||||||
|  |  SUBSYSTEM!="block", GOTO="md_inc_end" | ||||||
|  |   | ||||||
|  # handle potential components of arrays (the ones supported by md) |  # handle potential components of arrays (the ones supported by md) | ||||||
| -ENV{ID_FS_TYPE}=="ddf_raid_member|isw_raid_member|linux_raid_member", GOTO="md_inc"
 |  | ||||||
| -GOTO="md_inc_end"
 |  | ||||||
| +#ENV{ID_FS_TYPE}=="ddf_raid_member|isw_raid_member|linux_raid_member", GOTO="md_inc"
 |  | ||||||
| +#GOTO="md_inc_end"
 |  | ||||||
|   |  | ||||||
| -LABEL="md_inc"
 |  | ||||||
| +#LABEL="md_inc"
 |  | ||||||
|   |  | ||||||
|  # remember you can limit what gets auto/incrementally assembled by |  | ||||||
|  # mdadm.conf(5)'s 'AUTO' and selectively whitelist using 'ARRAY' |  | ||||||
| -ACTION=="add", RUN+="/sbin/mdadm --incremental $devnode --offroot"
 |  | ||||||
| -ACTION=="remove", ENV{ID_PATH}=="?*", RUN+="/sbin/mdadm -If $name --path $env{ID_PATH}"
 |  | ||||||
| -ACTION=="remove", ENV{ID_PATH}!="?*", RUN+="/sbin/mdadm -If $name"
 |  | ||||||
| +#ACTION=="add", RUN+="/sbin/mdadm --incremental $devnode --offroot"
 |  | ||||||
| +#ACTION=="remove", ENV{ID_PATH}=="?*", RUN+="/sbin/mdadm -If $name --path $env{ID_PATH}"
 |  | ||||||
| +#ACTION=="remove", ENV{ID_PATH}!="?*", RUN+="/sbin/mdadm -If $name"
 |  | ||||||
|   |  | ||||||
|  LABEL="md_inc_end" |  | ||||||
|  | |||||||
							
								
								
									
										16
									
								
								mdadm.spec
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								mdadm.spec
									
									
									
									
									
								
							| @ -1,7 +1,7 @@ | |||||||
| Summary:     The mdadm program controls Linux md devices (software RAID arrays) | Summary:     The mdadm program controls Linux md devices (software RAID arrays) | ||||||
| Name:        mdadm | Name:        mdadm | ||||||
| Version:     3.3 | Version:     3.3.1 | ||||||
| Release:     8%{?dist} | Release:     1%{?dist} | ||||||
| Source:      http://www.kernel.org/pub/linux/utils/raid/mdadm/mdadm-%{version}.tar.xz | Source:      http://www.kernel.org/pub/linux/utils/raid/mdadm/mdadm-%{version}.tar.xz | ||||||
| Source1:     mdmonitor.init | Source1:     mdmonitor.init | ||||||
| Source2:     raid-check | Source2:     raid-check | ||||||
| @ -11,11 +11,6 @@ Source5:     mdadm-cron | |||||||
| Source6:     mdmonitor.service | Source6:     mdmonitor.service | ||||||
| Source7:     mdadm.conf | Source7:     mdadm.conf | ||||||
| Source8:     mdadm_event.conf | Source8:     mdadm_event.conf | ||||||
| Patch1:      mdadm-3.3-Be-consistent-in-return-types-from-byteswap-macros.patch |  | ||||||
| Patch93:     mdadm-3.2.6-Remove-offroot-argument-and-default-to-always-settin.patch |  | ||||||
| Patch94:     mdadm-3.2.6-Add-support-for-launching-mdmon-via-systemctl-instea.patch |  | ||||||
| Patch95:     mdadm-3.2.6-In-case-launching-mdmon-fails-print-an-error-message.patch |  | ||||||
| Patch96:     mdadm-3.2.6-mdmon-add-foreground-option.patch |  | ||||||
| # Fedora customization patches | # Fedora customization patches | ||||||
| Patch97:     mdadm-3.3-udev.patch | Patch97:     mdadm-3.3-udev.patch | ||||||
| Patch98:     mdadm-2.5.2-static.patch | Patch98:     mdadm-2.5.2-static.patch | ||||||
| @ -42,7 +37,6 @@ file can be used to help with some common tasks. | |||||||
| %prep | %prep | ||||||
| %setup -q | %setup -q | ||||||
| 
 | 
 | ||||||
| %patch1 -p1 -b .types |  | ||||||
| # Fedora customization patches | # Fedora customization patches | ||||||
| %patch97 -p1 -b .udev | %patch97 -p1 -b .udev | ||||||
| %patch98 -p1 -b .static | %patch98 -p1 -b .static | ||||||
| @ -99,6 +93,7 @@ rm -rf %{buildroot} | |||||||
| %{_sbindir}/* | %{_sbindir}/* | ||||||
| %{_unitdir}/* | %{_unitdir}/* | ||||||
| %{_mandir}/man*/md* | %{_mandir}/man*/md* | ||||||
|  | /usr/lib/systemd/system-shutdown/* | ||||||
| %config(noreplace) %{_sysconfdir}/cron.d/* | %config(noreplace) %{_sysconfdir}/cron.d/* | ||||||
| %config(noreplace) %{_sysconfdir}/sysconfig/* | %config(noreplace) %{_sysconfdir}/sysconfig/* | ||||||
| %dir %{_localstatedir}/run/%{name}/ | %dir %{_localstatedir}/run/%{name}/ | ||||||
| @ -106,6 +101,11 @@ rm -rf %{buildroot} | |||||||
| /etc/libreport/events.d/* | /etc/libreport/events.d/* | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Tue Jun 10 2014 Jes Sorensen <Jes.Sorensen@redhat.com> - 3.3.1-1 | ||||||
|  | - Update to mdadm-3.3.1 | ||||||
|  | - Fixup mdadm.rules to honor 'change' events | ||||||
|  | - Resolvez bz1105136 | ||||||
|  | 
 | ||||||
| * Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3-8 | * Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3-8 | ||||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild | - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user