Thread (13 messages) 13 messages, 1 author, 2009-10-14

[mdadm PATCH 11/12] mdmon: exec(2) when the switchroot argument is not "/"

STALE6197d

From: Dan Williams <hidden>
Date: 2009-10-14 02:11:12
Subsystem: the rest · Maintainer: Linus Torvalds

Try to execute mdmon from the target namespace.  When used for initramfs
handovers we need to drop all references to the initramfs filesystem for
that memory to be freed.

Cc: Hans de Goede <redacted>
Signed-off-by: Dan Williams <redacted>
---
 mdmon.c |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/mdmon.c b/mdmon.c
index 5f87e78..d3e8be5 100644
--- a/mdmon.c
+++ b/mdmon.c
@@ -369,6 +369,29 @@ int mdmon(char *devname, int devnum, int scan, char *switchroot)
 
 	dprintf("starting mdmon for %s in %s\n",
 		devname, switchroot ? : "/");
+
+	/* try to spawn mdmon instances from the target file system */
+	if (switchroot && strcmp(switchroot, "/") != 0) {
+		char path[1024];
+		pid_t pid;
+
+		sprintf(path, "%s/sbin/mdmon", switchroot);
+		switch (fork()) {
+		case 0:
+			execl(path, "mdmon", devname, NULL);
+			exit(1);
+		case -1:
+			return 1;
+		default:
+			pid = wait(&status);
+			if (pid > -1 && WIFEXITED(status) &&
+			    WEXITSTATUS(status) == 0)
+				return 0;
+			else
+				return 1;
+		}
+	}
+
 	mdfd = open_dev(devnum);
 	if (mdfd < 0) {
 		fprintf(stderr, "mdmon: %s: %s\n", devname,
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help