summaryrefslogtreecommitdiffstats
path: root/daemons/lvmetad
diff options
context:
space:
mode:
authorPetr Rockai <prockai@redhat.com>2011-06-14 02:36:38 +0000
committerPetr Rockai <prockai@redhat.com>2011-06-14 02:36:38 +0000
commitacf3616b3abe1be3e8915e57d76b123b556a686e (patch)
treefee303e37bc16ac736f92884dc2c9a5975cdfe19 /daemons/lvmetad
parent92658f566149b5132d24579eb885e7e9f728d3bc (diff)
downloadlvm2-acf3616b3abe1be3e8915e57d76b123b556a686e.tar.gz
lvm2-acf3616b3abe1be3e8915e57d76b123b556a686e.tar.xz
lvm2-acf3616b3abe1be3e8915e57d76b123b556a686e.zip
Add a skeleton for lvmetad, a test client, and a temporary Makefile to build
them. These are currently mostly for testing the daemon-common code. LVMetaD functionality is expected to trickle in soon though.
Diffstat (limited to 'daemons/lvmetad')
-rw-r--r--daemons/lvmetad/Makefile26
-rw-r--r--daemons/lvmetad/lvmetad-client.h1
-rw-r--r--daemons/lvmetad/lvmetad-core.c76
-rw-r--r--daemons/lvmetad/testclient.c12
4 files changed, 115 insertions, 0 deletions
diff --git a/daemons/lvmetad/Makefile b/daemons/lvmetad/Makefile
new file mode 100644
index 00000000..1d44377e
--- /dev/null
+++ b/daemons/lvmetad/Makefile
@@ -0,0 +1,26 @@
+#
+# WARNING
+#
+# This is a temporary Makefile. You need to edit the IPATH/LPATH variables to
+# point to build-dir of LVM2. You may then just run "make" to build the lvmetad
+# binary and the test client.
+#
+
+SHARED = ../common/daemon-shared.c
+CLIENT = ../common/daemon-client.c $(SHARED)
+SERVER = ../common/daemon-server.c $(SHARED)
+SHARED_H = ../common/daemon-shared.h
+CLIENT_H = ../common/daemon-client.h $(SHARED_H)
+SERVER_H = ../common/daemon-server.h $(SHARED_H)
+
+LIBS = -ldevmapper -lpthread
+IPATH = -I../common -I/srv/build/lvm2/cvs-lvmetad/default/include
+LPATH = -L/srv/build/lvm2/cvs-lvmetad/default/libdm
+
+all: testclient lvmetad
+
+testclient: testclient.c $(CLIENT_H) $(CLIENT)
+ gcc -g testclient.c $(CLIENT) $(IPATH) $(LPATH) $(LIBS) -o testclient
+
+lvmetad: lvmetad-core.c ../common/daemon-server.c ../common/daemon-server.h ../common/daemon-shared.h ../common/daemon-shared.c
+ gcc -g lvmetad-core.c $(SERVER) $(IPATH) $(LPATH) $(LIBS) -o lvmetad
diff --git a/daemons/lvmetad/lvmetad-client.h b/daemons/lvmetad/lvmetad-client.h
index ef3588bc..d5b3f843 100644
--- a/daemons/lvmetad/lvmetad-client.h
+++ b/daemons/lvmetad/lvmetad-client.h
@@ -16,6 +16,7 @@
#define _LVM_LVMETAD_CLIENT_H
#include "daemon-client.h"
+#include "metadata-exported.h"
/* Different types of replies we may get from lvmetad. */
diff --git a/daemons/lvmetad/lvmetad-core.c b/daemons/lvmetad/lvmetad-core.c
new file mode 100644
index 00000000..9f5deb0f
--- /dev/null
+++ b/daemons/lvmetad/lvmetad-core.c
@@ -0,0 +1,76 @@
+#include "metadata-exported.h"
+#include "../common/daemon-server.h"
+
+typedef struct {
+} lvmetad_state;
+
+static response handler(daemon_state s, client_handle h, request r)
+{
+ response res;
+ fprintf(stderr, "handling client request: %s\n", r.buffer);
+ res.error = 1;
+ res.buffer = strdup("hey hey.\n\n");
+ return res;
+}
+
+static int setup_post(daemon_state *s)
+{
+ lvmetad_state *ls = s->private;
+
+ /* if (ls->initial_registrations)
+ _process_initial_registrations(ds->initial_registrations); */
+
+ return 1;
+}
+
+static void usage(char *prog, FILE *file)
+{
+ fprintf(file, "Usage:\n"
+ "%s [-V] [-h] [-d] [-d] [-d] [-f]\n\n"
+ " -V Show version of lvmetad\n"
+ " -h Show this help information\n"
+ " -d Log debug messages to syslog (-d, -dd, -ddd)\n"
+ " -R Replace a running lvmetad instance, loading its data\n"
+ " -f Don't fork, run in the foreground\n\n", prog);
+}
+
+int main(int argc, char *argv[])
+{
+ signed char opt;
+ daemon_state s;
+ lvmetad_state ls;
+ int _restart = 0;
+
+ s.private = &ls;
+ s.setup_post = setup_post;
+ s.handler = handler;
+ s.socket_path = "/var/run/lvm/lvmetad.socket";
+ s.pidfile = "/var/run/lvm/lvmetad.pid";
+
+ while ((opt = getopt(argc, argv, "?fhVdR")) != EOF) {
+ switch (opt) {
+ case 'h':
+ usage(argv[0], stdout);
+ exit(0);
+ case '?':
+ usage(argv[0], stderr);
+ exit(0);
+ case 'R':
+ _restart++;
+ break;
+ case 'f':
+ s.foreground = 1;
+ break;
+ case 'd':
+ s.log_level++;
+ break;
+ case 'V':
+ printf("lvmetad version 0\n");
+ exit(1);
+ break;
+ }
+ }
+
+ daemon_start(s);
+ return 0;
+}
diff --git a/daemons/lvmetad/testclient.c b/daemons/lvmetad/testclient.c
new file mode 100644
index 00000000..5d8752b5
--- /dev/null
+++ b/daemons/lvmetad/testclient.c
@@ -0,0 +1,12 @@
+#include "lvmetad-client.h"
+
+int main() {
+ daemon_handle h = lvmetad_open();
+ daemon_request rq = { .buffer= "hello worldn\n" };
+ int i;
+ for (i = 0; i < 5; ++i ) {
+ daemon_reply reply = daemon_send(h, rq);
+ fprintf(stderr, "daemon says: %s\n", reply.buffer);
+ }
+ return 0;
+}