[Cluster-devel] cluster/dlm Makefile tool/Makefile tool/main.c
teigland at sourceware.org
teigland at sourceware.org
Fri May 18 16:39:52 UTC 2007
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: teigland at sourceware.org 2007-05-18 16:39:51
Added files:
dlm : Makefile
dlm/tool : Makefile main.c
Log message:
add dlm_tool, can be used to join/leave lockspace
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/dlm/Makefile.diff?cvsroot=cluster&r1=1.8&r2=1.9
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/dlm/tool/Makefile.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/dlm/tool/main.c.diff?cvsroot=cluster&r1=NONE&r2=1.1
--- cluster/dlm/Makefile 2007/04/30 11:22:05 1.8
+++ cluster/dlm/Makefile 2007/05/18 16:39:49 1.9
@@ -1,9 +1,8 @@
###############################################################################
###############################################################################
##
-## Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
-## Copyright (C) 2004 Red Hat, Inc. All rights reserved.
-##
+## Copyright (C) 2005 Red Hat, Inc. All rights reserved.
+##
## This copyrighted material is made available to anyone wishing to use,
## modify, copy, or redistribute it subject to the terms and conditions
## of the GNU General Public License v.2.
@@ -11,18 +10,10 @@
###############################################################################
###############################################################################
-all:
- ${MAKE} -C lib all
-
-install: all
- ${MAKE} -C lib install
-
-uninstall:
- ${MAKE} -C lib uninstall
-
-clean:
- ${MAKE} -C lib clean
- rm -f *~
+SUBDIRS=lib tool
-distclean: clean
- rm -f make/defines.mk
+%:
+ set -e && \
+ for i in ${SUBDIRS}; do \
+ ${MAKE} -C $$i $@; \
+ done
/cvs/cluster/cluster/dlm/tool/Makefile,v --> standard output
revision 1.1
--- cluster/dlm/tool/Makefile
+++ - 2007-05-18 16:39:52.477544000 +0000
@@ -0,0 +1,39 @@
+###############################################################################
+###############################################################################
+##
+## Copyright (C) 2005 Red Hat, Inc. All rights reserved.
+##
+## This copyrighted material is made available to anyone wishing to use,
+## modify, copy, or redistribute it subject to the terms and conditions
+## of the GNU General Public License v.2.
+##
+###############################################################################
+###############################################################################
+
+include ../../make/defines.mk
+
+TARGET= dlm_tool
+
+OBJS= main.o
+
+CFLAGS += -g
+CFLAGS += -I. -I../lib/
+LDFLAGS += -L../lib -ldlm
+
+all: ${TARGET}
+
+${TARGET}: ${OBJS}
+ $(CC) -o $@ $^ $(LDFLAGS)
+
+%.o: %.c
+ $(CC) $(CFLAGS) -c -o $@ $<
+
+clean:
+ rm -f *.o ${TARGET}
+
+install: all
+ install -d ${sbindir}
+ install ${TARGET} ${sbindir}
+
+uninstall:
+ ${UNINSTALL} ${TARGET} ${sbindir}
/cvs/cluster/cluster/dlm/tool/main.c,v --> standard output
revision 1.1
--- cluster/dlm/tool/main.c
+++ - 2007-05-18 16:39:52.912869000 +0000
@@ -0,0 +1,189 @@
+/******************************************************************************
+*******************************************************************************
+**
+** Copyright (C) 2007 Red Hat, Inc. All rights reserved.
+**
+** This copyrighted material is made available to anyone wishing to use,
+** modify, copy, or redistribute it subject to the terms and conditions
+** of the GNU General Public License v.2.
+**
+*******************************************************************************
+******************************************************************************/
+
+#include <sys/types.h>
+#include <sys/un.h>
+#include <inttypes.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <stddef.h>
+#include <fcntl.h>
+#include <string.h>
+#include <errno.h>
+#include <netinet/in.h>
+
+#include "libdlm.h"
+
+#define OPTION_STRING "hVvd:"
+
+#define OP_JOIN 1
+#define OP_LEAVE 2
+#define OP_JOINLEAVE 3
+
+static char *prog_name;
+static char *lsname;
+static int operation;
+static int opt_ind;
+static int verbose;
+static int opt_dir = 0;
+
+static void print_usage(void)
+{
+ printf("Usage:\n");
+ printf("\n");
+ printf("%s [options] [join|leave]\n", prog_name);
+ printf("\n");
+ printf("Options:\n");
+ printf(" -v Verbose output, extra event information\n");
+ printf(" -h Print this help, then exit\n");
+ printf(" -V Print program version information, then exit\n");
+ printf(" -d <n> Resource directory off/on (0/1), default 0\n");
+ printf("\n");
+}
+
+static void decode_arguments(int argc, char **argv)
+{
+ int cont = 1;
+ int optchar;
+
+ while (cont) {
+ optchar = getopt(argc, argv, OPTION_STRING);
+
+ switch (optchar) {
+ case 'v':
+ verbose = 1;
+ break;
+
+ case 'h':
+ print_usage();
+ exit(EXIT_SUCCESS);
+ break;
+
+ case 'd':
+ opt_dir = atoi(optarg);
+ break;
+
+ case 'V':
+ printf("%s (built %s %s)\n",
+ prog_name, __DATE__, __TIME__);
+ /* printf("%s\n", REDHAT_COPYRIGHT); */
+ exit(EXIT_SUCCESS);
+ break;
+
+ case ':':
+ case '?':
+ fprintf(stderr, "Please use '-h' for usage.\n");
+ exit(EXIT_FAILURE);
+ break;
+
+ case EOF:
+ cont = 0;
+ break;
+
+ default:
+ fprintf(stderr, "unknown option: %c\n", optchar);
+ exit(EXIT_FAILURE);
+ break;
+ };
+ }
+
+ while (optind < argc) {
+ if (!strncmp(argv[optind], "join", 4) &&
+ (strlen(argv[optind]) == 4)) {
+ operation = OP_JOIN;
+ opt_ind = optind + 1;
+ break;
+ } else if (!strncmp(argv[optind], "leave", 5) &&
+ (strlen(argv[optind]) == 5)) {
+ operation = OP_LEAVE;
+ opt_ind = optind + 1;
+ break;
+ } else if (!strncmp(argv[optind], "joinleave", 9) &&
+ (strlen(argv[optind]) == 9)) {
+ operation = OP_JOINLEAVE;
+ opt_ind = optind + 1;
+ break;
+ }
+ optind++;
+ }
+
+ if (!operation || !opt_ind) {
+ print_usage();
+ exit(EXIT_FAILURE);
+ }
+
+ lsname = argv[opt_ind];
+}
+
+void do_join(char *name)
+{
+ dlm_lshandle_t *dh;
+
+ printf("Joining lockspace \"%s\"\n", name);
+ fflush(stdout);
+
+ dh = dlm_new_lockspace(name, 0600, DLM_LSFL_NODIR);
+ if (!dh) {
+ fprintf(stderr, "dlm_create_lockspace %s error %lu %d\n",
+ name, (unsigned long) dh, errno);
+ exit(-1);
+ }
+
+ dlm_close_lockspace(dh);
+ /* there's no autofree so the ls should stay around */
+ printf("done\n");
+}
+
+void do_leave(char *name)
+{
+ dlm_lshandle_t *dh;
+
+ printf("Leaving lockspace \"%s\"\n", name);
+ fflush(stdout);
+
+ dh = dlm_open_lockspace(name);
+ if (!dh) {
+ fprintf(stderr, "dlm_open_lockspace %s error %lu %d\n",
+ name, (unsigned long) dh, errno);
+ exit(-1);
+ }
+
+ dlm_release_lockspace(name, dh, 1);
+ printf("done\n");
+}
+
+int main(int argc, char **argv)
+{
+ prog_name = argv[0];
+ decode_arguments(argc, argv);
+ /* check_name(lsname); */
+
+ switch (operation) {
+ case OP_JOIN:
+ do_join(lsname);
+ break;
+
+ case OP_LEAVE:
+ do_leave(lsname);
+ break;
+
+ case OP_JOINLEAVE:
+ do_join(lsname);
+ do_leave(lsname);
+ break;
+ }
+
+ return 0;
+}
+
More information about the Cluster-devel
mailing list