CVSROOT:        /cvs/cluster
Module name:    cluster
Changes by:     [EMAIL PROTECTED]       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 via email to