[lvm-devel] master - lvmetad: Only create pidfile when running as a daemon (no -f).

Petr Rockai mornfall at fedoraproject.org
Tue Oct 9 23:49:08 UTC 2012


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=19971492632fb2273bb2a991858e5cd5b48e2c5d
Commit:        19971492632fb2273bb2a991858e5cd5b48e2c5d
Parent:        329d10268cf64f6d2ddb801f0191f3112c76ef66
Author:        Petr Rockai <prockai at redhat.com>
AuthorDate:    Tue Oct 9 20:25:17 2012 +0200
Committer:     Petr Rockai <prockai at redhat.com>
CommitterDate: Tue Oct 9 20:37:34 2012 +0200

lvmetad: Only create pidfile when running as a daemon (no -f).

Additionally, -f now makes -s mandatory, so the foreground (debugging) lvmetad
does not steal the system-wide socket accidentally.
---
 daemons/lvmetad/lvmetad-core.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/daemons/lvmetad/lvmetad-core.c b/daemons/lvmetad/lvmetad-core.c
index 4741649..ff861a2 100644
--- a/daemons/lvmetad/lvmetad-core.c
+++ b/daemons/lvmetad/lvmetad-core.c
@@ -1060,6 +1060,7 @@ int main(int argc, char *argv[])
 	daemon_state s = { .private = NULL };
 	lvmetad_state ls;
 	int _restart = 0;
+	int _socket_override = 1;
 
 	s.name = "lvmetad";
 	s.private = &ls;
@@ -1067,8 +1068,10 @@ int main(int argc, char *argv[])
 	s.daemon_fini = fini;
 	s.handler = handler;
 	s.socket_path = getenv("LVM_LVMETAD_SOCKET");
-	if (!s.socket_path)
+	if (!s.socket_path) {
+		_socket_override = 0;
 		s.socket_path = DEFAULT_RUN_DIR "/lvmetad.socket";
+	}
 	s.pidfile = LVMETAD_PIDFILE;
 	s.protocol = "lvmetad";
 	s.protocol_version = 1;
@@ -1094,6 +1097,7 @@ int main(int argc, char *argv[])
 			break;
 		case 's': // --socket
 			s.socket_path = optarg;
+			_socket_override = 1;
 			break;
 		case 'V':
 			printf("lvmetad version 0\n");
@@ -1101,6 +1105,13 @@ int main(int argc, char *argv[])
 		}
 	}
 
+	if (s.foreground && !_socket_override) {
+		fprintf(stderr, "A socket path (-s) is required in foreground mode.");
+		exit(2);
+	} else {
+		s.pidfile = NULL;
+	}
+
 	daemon_start(s);
 	return 0;
 }




More information about the lvm-devel mailing list