* dev-mornfall-lvmcache - libdaemon: Print a diagnostic when we fail to lock the pidfile.
@ 2013-06-05 12:01 Petr Rockai
0 siblings, 0 replies; only message in thread
From: Petr Rockai @ 2013-06-05 12:01 UTC (permalink / raw)
To: lvm-devel
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=dce8d06af7e5a14a1507bea0e64e6cc27556cbc7
Commit: dce8d06af7e5a14a1507bea0e64e6cc27556cbc7
Parent: 9495a3d807b890f7a639e5761b2b37ba495b5d9b
Author: Petr Rockai <prockai@redhat.com>
AuthorDate: Mon Apr 15 09:43:30 2013 +0200
Committer: Petr Rockai <prockai@redhat.com>
CommitterDate: Mon Apr 15 16:07:07 2013 +0200
libdaemon: Print a diagnostic when we fail to lock the pidfile.
---
libdaemon/server/daemon-server.c | 18 +++++++++++++-----
1 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/libdaemon/server/daemon-server.c b/libdaemon/server/daemon-server.c
index 735a0ea..1db7ca7 100644
--- a/libdaemon/server/daemon-server.c
+++ b/libdaemon/server/daemon-server.c
@@ -52,6 +52,8 @@ static void _exit_handler(int sig __attribute__((unused)))
_shutdown_requested = 1;
}
+#define EXIT_ALREADYRUNNING 13
+
#ifdef linux
#include <stddef.h>
@@ -261,7 +263,7 @@ static void remove_lockfile(const char *file)
perror("unlink failed");
}
-static void _daemonise(void)
+static void _daemonise(daemon_state s)
{
int child_status;
int fd;
@@ -296,8 +298,14 @@ static void _daemonise(void)
if (_shutdown_requested) /* Child has signaled it is ok - we can exit now */
exit(0);
- /* Problem with child. Determine what it is by exit code */
- fprintf(stderr, "Child exited with code %d\n", WEXITSTATUS(child_status));
+ switch (WEXITSTATUS(child_status)) {
+ case EXIT_ALREADYRUNNING:
+ fprintf(stderr, "Failed to acquire lock on %s. Already running?\n", s.pidfile);
+ break;
+ default:
+ /* Problem with child. Determine what it is by exit code */
+ fprintf(stderr, "Child exited with code %d\n", WEXITSTATUS(child_status));
+ }
exit(WEXITSTATUS(child_status));
}
@@ -464,7 +472,7 @@ void daemon_start(daemon_state s)
#endif
if (!s.foreground)
- _daemonise();
+ _daemonise(s);
s.log = &_log;
s.log->name = s.name;
@@ -481,7 +489,7 @@ void daemon_start(daemon_state s)
* after this point.
*/
if (dm_create_lockfile(s.pidfile) == 0)
- exit(1);
+ exit(EXIT_ALREADYRUNNING);
(void) dm_prepare_selinux_context(NULL, 0);
}
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2013-06-05 12:01 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-05 12:01 dev-mornfall-lvmcache - libdaemon: Print a diagnostic when we fail to lock the pidfile Petr Rockai
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.