cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
From: teigland@sourceware.org <teigland@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] cluster/dlm/tests/usertest dlmtest2.c
Date: 17 Jan 2008 21:49:00 -0000	[thread overview]
Message-ID: <20080117214900.19846.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	teigland at sourceware.org	2008-01-17 21:49:00

Modified files:
	dlm/tests/usertest: dlmtest2.c 

Log message:
	odds and ends not commited

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/dlm/tests/usertest/dlmtest2.c.diff?cvsroot=cluster&r1=1.10&r2=1.11

--- cluster/dlm/tests/usertest/dlmtest2.c	2007/08/23 19:13:54	1.10
+++ cluster/dlm/tests/usertest/dlmtest2.c	2008/01/17 21:49:00	1.11
@@ -21,6 +21,7 @@
 #include <time.h>
 #include <signal.h>
 #include <syslog.h>
+#include <sys/time.h>
 #include <asm/types.h>
 #include <sys/socket.h>
 #include <sys/poll.h>
@@ -54,6 +55,8 @@
 static int stress_lock_only = 0;
 static int openclose_ls = 0;
 static uint64_t our_xid;
+static char cmd[32];
+static int opt_cmd = 0;
 
 static unsigned int sts_eunlock, sts_ecancel, sts_etimedout, sts_edeadlk, sts_eagain, sts_other, sts_zero;
 static unsigned int bast_unlock, bast_skip;
@@ -102,16 +105,16 @@
 
 struct lk *locks;
 
-void unlock(int i);
-void unlockf(int i);
+static void unlock(int i);
+static void unlockf(int i);
 
 
-int rand_int(int a, int b)
+static int rand_int(int a, int b)
 {
 	return a + (int) (((float)(b - a + 1)) * random() / (RAND_MAX+1.0)); 
 }
 
-char *status_str(int status)
+static char *status_str(int status)
 {
 	static char sts_str[8];
 
@@ -136,7 +139,7 @@
 	}
 }
 
-char *op_str(int op)
+static char *op_str(int op)
 {
 	switch (op) {
 	case Op_lock:
@@ -152,7 +155,7 @@
 	}
 }
 
-struct lk *get_lock(int i)
+static struct lk *get_lock(int i)
 {
 	if (i < 0)
 		return NULL;
@@ -161,7 +164,7 @@
 	return &locks[i];
 }
 
-int all_unlocks_done(void)
+static int all_unlocks_done(void)
 {
 	struct lk *lk;
 	int i;
@@ -175,7 +178,7 @@
 	return 1;
 }
 
-void dump(void)
+static void dump(void)
 {
 	struct timeval now;
 	struct lk *lk;
@@ -193,18 +196,18 @@
 			lk->wait_ast,
 			op_str(lk->lastop),
 			status_str(lk->last_status),
-			lk->wait_ast ? now.tv_sec - lk->begin.tv_sec : 0);
+			lk->wait_ast ? (unsigned int)(now.tv_sec - lk->begin.tv_sec) : 0);
 	}
 }
 
-void bastfn(void *arg)
+static void bastfn(void *arg)
 {
 	struct lk *lk = arg;
 	lk->bast = 1;
 	bast_cb = 1;
 }
 
-void do_bast(struct lk *lk)
+static void do_bast(struct lk *lk)
 {
 	int skip = 0;
 
@@ -226,7 +229,7 @@
 	lk->bast = 0;
 }
 
-void do_bast_unlocks(void)
+static void do_bast_unlocks(void)
 {
 	struct lk *lk;
 	int i;
@@ -239,14 +242,14 @@
 	bast_cb = 0;
 }
 
-void process_libdlm(void)
+static void process_libdlm(void)
 {
 	dlm_dispatch(libdlm_fd);
 	if (bast_cb && !ignore_bast)
 		do_bast_unlocks();
 }
 
-void astfn(void *arg)
+static void astfn(void *arg)
 {
 	struct lk *lk = arg;
 	int i = lk->id;
@@ -341,7 +344,7 @@
    and issues the second lock before the reply for the overlapping
    cancel (which did nothing) has been received in the dlm. */
 
-void lock(int i, int mode)
+static void lock(int i, int mode)
 {
 	char name[DLM_RESNAME_MAXLEN];
 	struct lk *lk;
@@ -397,7 +400,7 @@
 	lk->lastop = Op_lock;
 }
 
-void lock_sync(int i, int mode)
+static void lock_sync(int i, int mode)
 {
 	char name[DLM_RESNAME_MAXLEN];
 	int flags = 0;
@@ -441,7 +444,7 @@
 	}
 }
 
-void lock_all(int mode)
+static void lock_all(int mode)
 {
 	int i;
 
@@ -449,7 +452,7 @@
 		lock(i, mode);
 }
 
-char *uflags(uint32_t flags)
+static char *uflags(uint32_t flags)
 {
 	if (flags == LKF_FORCEUNLOCK)
 		return "FORCEUNLOCK";
@@ -462,7 +465,7 @@
    try to do an unlockf during an outstanding op that will free
    the lock itself */
 
-void _unlock(int i, uint32_t flags)
+static void _unlock(int i, uint32_t flags)
 {
 	struct lk *lk;
 	uint32_t lkid;
@@ -494,7 +497,7 @@
 	}
 }
 
-void unlock(int i)
+static void unlock(int i)
 {
 	struct lk *lk = get_lock(i);
 
@@ -508,7 +511,7 @@
 		if (lk->acquired.tv_sec + lk->minhold > now.tv_sec) {
 			printf("        : unlock  %3d\t%x: gr %d rq %d held %u of %u s\n",
 				i, lk->lksb.sb_lkid, lk->grmode, lk->rqmode,
-				now.tv_sec - lk->acquired.tv_sec, lk->minhold);
+				(unsigned int)(now.tv_sec - lk->acquired.tv_sec), lk->minhold);
 			return;
 		}
 	}
@@ -518,7 +521,7 @@
 	lk->lastop = Op_unlock;
 }
 
-void unlockf(int i)
+static void unlockf(int i)
 {
 	struct lk *lk = get_lock(i);
 
@@ -532,7 +535,7 @@
 		if (lk->acquired.tv_sec + lk->minhold > now.tv_sec) {
 			printf("        : unlockf %3d\t%x: gr %d rq %d held %u of %u s\n",
 				i, lk->lksb.sb_lkid, lk->grmode, lk->rqmode,
-				now.tv_sec - lk->acquired.tv_sec, lk->minhold);
+				(unsigned int)(now.tv_sec - lk->acquired.tv_sec), lk->minhold);
 			return;
 		}
 	}
@@ -542,14 +545,14 @@
 	lk->lastop = Op_unlockf;
 }
 
-void cancel(int i)
+static void cancel(int i)
 {
 	struct lk *lk = get_lock(i);
 	_unlock(i, LKF_CANCEL);
 	lk->lastop = Op_cancel;
 }
 
-void canceld(int i, uint32_t lkid)
+static void canceld(int i, uint32_t lkid)
 {
 	int rv;
 
@@ -558,7 +561,7 @@
 	printf("canceld %x: %d %d\n", lkid, rv, errno);
 }
 
-void unlock_sync(int i)
+static void unlock_sync(int i)
 {
 	uint32_t lkid;
 	int rv;
@@ -586,7 +589,7 @@
 	lk->rqmode = -1;
 }
 
-void unlock_all(void)
+static void unlock_all(void)
 {
 	struct lk *lk;
 	int i;
@@ -597,7 +600,7 @@
 	}
 }
 
-void purge(int nodeid, int pid)
+static void purge(int nodeid, int pid)
 {
 	struct lk *lk;
 	int i, rv;
@@ -616,7 +619,7 @@
 	}
 }
 
-void purgetest(int nodeid, int pid)
+static void purgetest(int nodeid, int pid)
 {
 	struct lk *lk;
 	int i, mid = maxn / 2;
@@ -645,7 +648,7 @@
 	purge(nodeid, pid);
 }
 
-void tstress_unlocks(void)
+static void tstress_unlocks(void)
 {
 	struct lk *lk;
 	struct timeval now;
@@ -667,7 +670,7 @@
 		if (now.tv_sec >= lk->acquired.tv_sec + minhold) {
 			printf("        : unlock  %3d\t%x: gr %d rq %d held %u of %u s\n",
 				i, lk->lksb.sb_lkid, lk->grmode, lk->rqmode,
-				now.tv_sec - lk->acquired.tv_sec, minhold);
+				(unsigned int)(now.tv_sec - lk->acquired.tv_sec), minhold);
 
 			_unlock(i, 0);
 			lk->rqmode = -1;
@@ -677,10 +680,10 @@
 	}
 }
 
-void tstress(int num)
+static void tstress(int num)
 {
-	int i, o, op, max_op, skip;
 	unsigned int n, skips, lock_ops, unlock_ops, unlockf_ops, cancel_ops;
+	int i;
 	struct lk *lk;
 
 	n = skips = lock_ops = unlock_ops = unlockf_ops = cancel_ops = 0;
@@ -732,10 +735,10 @@
 	printf("ast status: zero %d other %d\n", sts_zero, sts_other);
 }
 
-void dstress(int num)
+static void dstress(int num)
 {
-	int i, o, op, max_op, skip;
 	unsigned int n, skips, lock_ops, unlock_ops, unlockf_ops, cancel_ops;
+	int i;
 	struct lk *lk;
 
 	n = skips = lock_ops = unlock_ops = unlockf_ops = cancel_ops = 0;
@@ -780,7 +783,7 @@
 	printf("ast status: zero %d other %d\n", sts_zero, sts_other);
 }
 
-void stress(int num)
+static void stress(int num)
 {
 	int i, o, op, max_op, skip;
 	unsigned int n, skips, lock_ops, unlock_ops, unlockf_ops, cancel_ops;
@@ -824,6 +827,8 @@
 		case 5:
 			op = Op_cancel;
 			break;
+		default:
+			op = 0;
 		}
 
 		skip = 0;
@@ -940,11 +945,11 @@
 		client[i].fd = -1;
 }
 
-void print_commands(void)
+static void print_commands(void)
 {
 	printf("Usage:\n");
 	printf("max locks (maxn) is %d (x of 0 to %d)\n", maxn, maxn-1);
-	printf("max resources (maxr) is %d, lock x used on resource (x % maxr)\n", maxr);
+	printf("max resources (maxr) is %d, lock x used on resource (x %% maxr)\n", maxr);
 	printf("EXIT		 - exit program after unlocking any held locks\n");
 	printf("kill		 - exit program without unlocking any locks\n");
 	printf("lock x mode	 - request/convert lock x\n");
@@ -984,7 +989,7 @@
 	printf("purgetest nodeid pid\n");
 }
 
-void print_settings(void)
+static void print_settings(void)
 {
 	printf("timewarn %d\n", timewarn);
 	printf("timeout %llu\n", (unsigned long long) timeout);
@@ -1000,18 +1005,18 @@
 	printf("stress_stop %d\n", stress_stop);
 	printf("stress_delay %d\n", stress_delay);
 	printf("stress_lock_only %d\n", stress_lock_only);
-	printf("our_xid %x\n", (unsigned long long)our_xid);
+	printf("our_xid %llx\n", (unsigned long long)our_xid);
 }
 
-void process_command(int *quit)
+static void process_command(int *quit)
 {
 	char inbuf[132];
-	char cmd[32];
-	int x = 0, y = 0, z = 0;
-
-	fgets(inbuf, sizeof(inbuf), stdin);
+	int x = 0, y = 0;
 
-	sscanf(inbuf, "%s %d %d", cmd, &x, &y, &z);
+	if (!opt_cmd) {
+		fgets(inbuf, sizeof(inbuf), stdin);
+		sscanf(inbuf, "%s %d %d", cmd, &x, &y);
+	}
 
 	if (!strncmp(cmd, "EXIT", 4)) {
 		*quit = 1;
@@ -1128,6 +1133,8 @@
 	}
 
 	if (!strncmp(cmd, "stress", 6) && strlen(cmd) == 6) {
+		if (iterations && !x)
+			x = iterations;
 		stress(x);
 		return;
 	}
@@ -1230,7 +1237,7 @@
 	printf("unknown command %s\n", cmd);
 }
 
-void print_usage(void)
+static void print_usage(void)
 {
 	printf("Options:\n");
 	printf("\n");
@@ -1246,7 +1253,7 @@
 	int optchar;
 
 	while (cont) {
-		optchar = getopt(argc, argv, "n:r:i:thVo");
+		optchar = getopt(argc, argv, "n:r:c:i:thVo");
 
 		switch (optchar) {
 
@@ -1258,6 +1265,11 @@
 			maxr = atoi(optarg);
 			break;
 
+		case 'c':
+			strcpy(cmd, optarg);
+			opt_cmd = 1;
+			break;
+
 		case 'i':
 			iterations = atoi(optarg);
 			break;
@@ -1334,7 +1346,7 @@
 	locks = malloc(maxn * sizeof(struct lk));
 	if (!locks) {
 		printf("no mem for %d locks\n", maxn);
-		return;
+		return 0;
 	}
 	memset(locks, 0, sizeof(*locks));
 
@@ -1367,7 +1379,8 @@
 	} else {
 		printf("dlm_new_lockspace...\n");
 
-		dh = dlm_new_lockspace("test", 0600, timewarn ? DLM_LSFL_TIMEWARN : 0);
+		dh = dlm_new_lockspace("test", 0600,
+				       timewarn ? DLM_LSFL_TIMEWARN : 0);
 		if (!dh) {
 			printf("dlm_new_lockspace error %lu %d\n",
 				(unsigned long)dh, errno);
@@ -1384,10 +1397,13 @@
 	libdlm_fd = rv;
 
 	client_add(libdlm_fd, &maxi);
-	client_add(STDIN_FILENO, &maxi);
 
-	if (strstr(argv[0], "dlmstress"))
-		stress(iterations);
+	if (opt_cmd) {
+		process_command(&quit);
+		goto out;
+	}
+
+	client_add(STDIN_FILENO, &maxi);
 
 	printf("Type EXIT to finish, help for usage\n");
 
@@ -1417,6 +1433,7 @@
 			break;
 	}
 
+ out:
 	if (openclose_ls) {
 		printf("dlm_close_lockspace\n");
 



             reply	other threads:[~2008-01-17 21:49 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-17 21:49 teigland [this message]
  -- strict thread matches above, loose matches on Subject: below --
2008-02-21 17:49 [Cluster-devel] cluster/dlm/tests/usertest dlmtest2.c teigland
2007-08-23 19:13 teigland
2007-08-22 14:01 teigland
2007-05-30 19:31 teigland
2007-04-27 19:09 teigland
2007-03-27 19:04 teigland
2007-02-27 18:55 teigland
2007-01-04 20:34 teigland
2006-12-12 21:17 teigland
2006-12-08 19:25 teigland

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080117214900.19846.qmail@sourceware.org \
    --to=teigland@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).