[PATCH] debian: symlink mdmon pidfile into /run/sendsigs.omit.d

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Some daemons should not be killed when the system is shutting down. In debian this is achieved by putting a file with the pid of the daemon in it in /run/sendsigs.omit.d (or a symlink to its pidfile).

This patch lets mdmon automatically create a symlink in /run/sendsigs.omit.d to its pidfile.

See also debian bug 684708 at
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=684708  ,
where I submitted a previous version of this patch.

Comments welcome.

Thanks,

Mike.
Index: mdadm-3.2.5/mdmon.c
===================================================================
--- mdadm-3.2.5.orig/mdmon.c	2012-08-13 09:46:43.205209547 +0000
+++ mdadm-3.2.5/mdmon.c	2012-08-24 09:44:45.472421616 +0000
@@ -142,6 +142,9 @@
 
 static int make_pidfile(char *devname)
 {
+#ifdef SENDSIGS_OMIT_DIR
+	char sendsigs_omit_path[100];
+#endif
 	char path[100];
 	char pid[10];
 	int fd;
@@ -160,6 +163,13 @@
 	close(fd);
 	if (n < 0)
 		return -errno;
+
+#ifdef SENDSIGS_OMIT_DIR
+	/* automatically symlink pidfile to sendsigs.omit.d/. ignore result. */
+	sprintf(sendsigs_omit_path, "%s/%s.pid", SENDSIGS_OMIT_DIR, devname);
+	symlink(path, sendsigs_omit_path);
+#endif
+
 	return 0;
 }
 
@@ -211,6 +221,11 @@
 	unlink(buf);
 	sprintf(buf, "%s/%s.sock", MDMON_DIR, devname);
 	unlink(buf);
+#ifdef SENDSIGS_OMIT_DIR
+	sprintf(buf, "%s/%s.pid", SENDSIGS_OMIT_DIR, devname);
+	unlink(buf);
+#endif
+
 }
 
 static int make_control_sock(char *devname)
Index: mdadm-3.2.5/mdadm.h
===================================================================
--- mdadm-3.2.5.orig/mdadm.h	2012-05-18 07:10:03.000000000 +0000
+++ mdadm-3.2.5/mdadm.h	2012-08-24 09:41:53.205479556 +0000
@@ -102,6 +102,16 @@
 #define FAILED_SLOTS_DIR "/run/mdadm/failed-slots"
 #endif /* FAILED_SLOTS */
 
+/* Debian has a sendsigs.omit.d directory where pidfiles are located
+ * of daemons that should not be killed when shutting down. We symlink
+ * the mdmon pidfiles into this directory.
+ */
+#ifdef DEBIAN
+#ifndef SENDSIGS_OMIT_DIR
+#define SENDSIGS_OMIT_DIR "/run/sendsigs.omit.d"
+#endif
+#endif
+
 #include	"md_u.h"
 #include	"md_p.h"
 #include	"bitmap.h"

[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux