[lvm-devel] [PATCH] lvmetad: --dump option to print state

David Teigland teigland at redhat.com
Fri Jan 4 16:42:22 UTC 2013


Also add long opts for other options.
---
 daemons/lvmetad/lvmetad-core.c | 32 ++++++++++++++++++++++++++++++--
 1 file changed, 30 insertions(+), 2 deletions(-)

diff --git a/daemons/lvmetad/lvmetad-core.c b/daemons/lvmetad/lvmetad-core.c
index 0a1c884..ab8d83e 100644
--- a/daemons/lvmetad/lvmetad-core.c
+++ b/daemons/lvmetad/lvmetad-core.c
@@ -20,11 +20,13 @@
 #include "daemon-server.h"
 #include "daemon-log.h"
 #include "lvm-version.h"
+#include "lvmetad-client.h"
 
 #include <assert.h>
 #include <pthread.h>
 #include <stdint.h>
 #include <unistd.h>
+#include <getopt.h>
 
 typedef struct {
 	log_state *log; /* convenience */
@@ -1019,6 +1021,19 @@ static response dump(lvmetad_state *s)
 	return res;
 }
 
+static void print_dump(const char *socket_path)
+{
+	daemon_handle h = lvmetad_open(socket_path);
+	daemon_reply reply;
+
+	reply = daemon_send_simple(h, "dump", NULL);
+
+	printf("%s\n", reply.buffer.mem);
+
+	daemon_reply_destroy(reply);
+	daemon_close(h);
+}
+
 static response handler(daemon_state s, client_handle h, request r)
 {
 	lvmetad_state *state = s.private;
@@ -1146,6 +1161,7 @@ static void usage(char *prog, FILE *file)
 int main(int argc, char *argv[])
 {
 	signed char opt;
+	int option_index = 0;
 	daemon_state s = { .private = NULL };
 	lvmetad_state ls;
 	int _socket_override = 1;
@@ -1165,8 +1181,17 @@ int main(int argc, char *argv[])
 	s.protocol_version = 1;
 	ls.log_config = "";
 
-	// use getopt_long
-	while ((opt = getopt(argc, argv, "?fhVl:s:")) != EOF) {
+	static struct option long_options[] = {
+		{"help",       no_argument,       0, 'h' },
+		{"dump",       no_argument,       0, 'd' },
+		{"foreground", no_argument,       0, 'f' },
+		{"log_config", required_argument, 0, 'l' },
+		{"socket",     required_argument, 0, 's' },
+		{"version",    no_argument,       0, 'V' },
+		{0,            0,                 0,  0  }
+	};
+
+	while ((opt = getopt_long(argc, argv, "hdfl:s:V", long_options, &option_index)) != EOF) {
 		switch (opt) {
 		case 'h':
 			usage(argv[0], stdout);
@@ -1174,6 +1199,9 @@ int main(int argc, char *argv[])
 		case '?':
 			usage(argv[0], stderr);
 			exit(0);
+		case 'd':
+			print_dump(s.socket_path);
+			exit(0);
 		case 'f':
 			s.foreground = 1;
 			break;
-- 
1.8.1.rc1.5.g7e0651a




More information about the lvm-devel mailing list