diff options
author | Petr Rockai <prockai@redhat.com> | 2011-06-14 02:36:38 +0000 |
---|---|---|
committer | Petr Rockai <prockai@redhat.com> | 2011-06-14 02:36:38 +0000 |
commit | acf3616b3abe1be3e8915e57d76b123b556a686e (patch) | |
tree | fee303e37bc16ac736f92884dc2c9a5975cdfe19 /daemons/lvmetad | |
parent | 92658f566149b5132d24579eb885e7e9f728d3bc (diff) | |
download | lvm2-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/Makefile | 26 | ||||
-rw-r--r-- | daemons/lvmetad/lvmetad-client.h | 1 | ||||
-rw-r--r-- | daemons/lvmetad/lvmetad-core.c | 76 | ||||
-rw-r--r-- | daemons/lvmetad/testclient.c | 12 |
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; +} |