From: Dan Williams Date: Fri, 3 Oct 2008 05:26:00 +0000 (-0700) Subject: mdmon: suicide prevention X-Git-Tag: mdadm-3.0-devel2~73 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8aae4219a2668acb88ad2777dacf69de941e7e07;p=thirdparty%2Fmdadm.git mdmon: suicide prevention mdmon cannot remove the pidfile at shutdown becuase it needs to stay running across the "mount -o remount,ro /" event. When it relaunches after a reboot there is a good chance that the pid will match what was there previously. The result is that the "take over for unresponsive mdmon" logic results in self termination. Signed-off-by: Dan Williams --- diff --git a/mdmon.c b/mdmon.c index d6b99a21..32805a84 100644 --- a/mdmon.c +++ b/mdmon.c @@ -139,6 +139,10 @@ static void try_kill_monitor(char *devname) close(fd); pid = strtoul(buf, NULL, 10); + /* first rule of survival... don't off yourself */ + if (pid == getpid()) + return; + /* kill this process if it is mdmon */ sprintf(buf, "/proc/%lu/cmdline", (unsigned long) pid); fd = open(buf, O_RDONLY);