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");
next 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).