From 7c2dd4c64823397d82d7d1c4e44f6a420df52aa6 Mon Sep 17 00:00:00 2001
From: Ben Pfaff <blp@nicira.com>
Date: Tue, 11 May 2010 10:56:10 -0700
Subject: [PATCH] daemon: Allow monitored daemon to dump core no more than
 once.

If the monitored daemon dumps core frequently, then this can quickly
exhaust the host's disk space.  This commit limits core dumps to at most
one per monitored session (typically, once per boot).
---
 lib/daemon.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/lib/daemon.c b/lib/daemon.c
index 081912b1..292be146 100644
--- a/lib/daemon.c
+++ b/lib/daemon.c
@@ -353,6 +353,18 @@ monitor_daemon(pid_t daemon_pid)
             free(s);
 
             if (should_restart(status)) {
+                if (WCOREDUMP(status)) {
+                    /* Disable further core dumps to save disk space. */
+                    struct rlimit r;
+
+                    r.rlim_cur = 0;
+                    r.rlim_max = 0;
+                    if (setrlimit(RLIMIT_CORE, &r) == -1) {
+                        VLOG_WARN("failed to disable core dumps: %s",
+                                  strerror(errno));
+                    }
+                }
+
                 VLOG_ERR("%s, restarting", status_msg);
                 daemon_pid = fork_and_wait_for_startup(&daemonize_fd);
                 if (!daemon_pid) {
-- 
2.30.2