tests/devcount.c | 58 +++++++++---------------------------------- tests/devcountn | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 45 deletions(-)
New commits: commit a7b2b21047deddf7e7d310cf7b41a4ad11df173e Author: David Teigland teigland@redhat.com Date: Fri Apr 15 12:43:24 2011 -0500
devcountn: start multiple devcount tests
diff --git a/tests/devcount.c b/tests/devcount.c index fbb0723..e372645 100644 --- a/tests/devcount.c +++ b/tests/devcount.c @@ -75,11 +75,12 @@ void print_entries(int pid, char *buf) } }
-void print_our_we(int pid, struct entry *our_we) +void print_our_we(int pid, int writes, struct entry *our_we) { - printf("%d w index %d turn %u time %llu %u:%llu:%llu " + printf("%d w %d index %d turn %u time %llu %u:%llu:%llu " "last %u %llu %u:%llu:%llu\n", pid, + writes, our_hostid - 1, our_we->turn, (unsigned long long)our_we->time, @@ -111,6 +112,7 @@ static int do_count(int argc, char *argv[]) uint32_t max_turn; int sec1, sec2; int read_seconds, write_seconds; + uint32_t writes = 0;
if (argc < COUNT_ARGS) return -1; @@ -128,8 +130,10 @@ static int do_count(int argc, char *argv[]) read_seconds = sec2; }
+ /* printf("%d %s count_disk %s sec1 %d sec2 %d our_hostid %d\n", our_pid, argv[1], count_path, sec1, sec2, our_hostid); + */
fd = open(count_path, O_RDWR | O_DIRECT | O_SYNC, 0); if (fd < 0) { @@ -255,9 +259,9 @@ static int do_count(int argc, char *argv[]) perror("write failed"); goto fail; } + writes = 1;
- printf("%d first write\n", our_pid); - print_our_we(our_pid, our_we); + print_our_we(our_pid, writes, our_we);
start = time(NULL);
@@ -272,13 +276,13 @@ static int do_count(int argc, char *argv[]) perror("write failed"); goto fail; } + writes++;
if (write_seconds && (our_we->time - start >= write_seconds)) break; }
- printf("%d last write\n", our_pid); - print_our_we(our_pid, our_we); + print_our_we(our_pid, writes, our_we);
if (turn_file) { fprintf(turn_file, "turn %03u start %llu end %llu host %u pid %u\n", @@ -385,9 +389,6 @@ static int do_relock(int argc, char *argv[]) res->disks[0].path[SANLK_PATH_LEN-1] = '\0'; res->disks[0].offset = 1024000;
- printf("%d lock_disk %s count_disk %s our_hostid %d\n", - parent_pid, lock_path, count_path, our_hostid); - memset(&lockspace, 0, sizeof(lockspace)); strcpy(lockspace.name, "devcount"); strcpy(lockspace.host_id_disk.path, lock_path); @@ -395,15 +396,7 @@ static int do_relock(int argc, char *argv[]) lockspace.host_id = our_hostid;
rv = sanlock_add_lockspace(&lockspace, 0); - if (rv == -EEXIST) { - printf("%d sanlock_add_lockspace exists\n", parent_pid); - rv = 0; - } - if (rv < 0) { - printf("%d sanlock_add_lockspace error %d\n", parent_pid, rv); - exit(EXIT_FAILURE); - } - printf("%d sanlock_add_lockspace done\n", parent_pid); + printf("%d sanlock_add_lockspace %d\n", parent_pid, rv);
/* * argv[0] = devcount @@ -565,9 +558,6 @@ static int do_lock(int argc, char *argv[]) res->disks[0].path[SANLK_PATH_LEN-1] = '\0'; res->disks[0].offset = 1024000;
- printf("%d lock_disk %s count_disk %s our_hostid %d\n", - parent_pid, lock_path, count_path, our_hostid); - memset(&lockspace, 0, sizeof(lockspace)); strcpy(lockspace.name, "devcount"); strcpy(lockspace.host_id_disk.path, lock_path); @@ -575,15 +565,7 @@ static int do_lock(int argc, char *argv[]) lockspace.host_id = our_hostid;
rv = sanlock_add_lockspace(&lockspace, 0); - if (rv == -EEXIST) { - printf("%d sanlock_add_lockspace exists\n", parent_pid); - rv = 0; - } - if (rv < 0) { - printf("%d sanlock_add_lockspace error %d\n", parent_pid, rv); - exit(EXIT_FAILURE); - } - printf("%d sanlock_add_lockspace done\n", parent_pid); + printf("%d sanlock_add_lockspace %d\n", parent_pid, rv);
/* * argv[0] = devcount @@ -668,9 +650,6 @@ static int do_wrap(int argc, char *argv[]) res->disks[0].path[SANLK_PATH_LEN-1] = '\0'; res->disks[0].offset = 1024000;
- printf("%d lock_disk %s count_disk %s our_hostid %d\n", - pid, lock_path, count_path, our_hostid); - /* * argv[0] = devcount * argv[1] = wrap @@ -918,9 +897,6 @@ static int do_migrate(int argc, char *argv[]) res->disks[0].path[SANLK_PATH_LEN-1] = '\0'; res->disks[0].offset = 1024000;
- printf("%d lock_disk %s count_disk %s our_hostid %d max_hostid %d\n", - parent_pid, lock_path, count_path, our_hostid, max_hostid); - memset(&lockspace, 0, sizeof(lockspace)); strcpy(lockspace.name, "devcount"); strcpy(lockspace.host_id_disk.path, lock_path); @@ -928,15 +904,7 @@ static int do_migrate(int argc, char *argv[]) lockspace.host_id = our_hostid;
rv = sanlock_add_lockspace(&lockspace, 0); - if (rv == -EEXIST) { - printf("%d sanlock_add_lockspace exists\n", parent_pid); - rv = 0; - } - if (rv < 0) { - printf("%d sanlock_add_lockspace error %d\n", parent_pid, rv); - exit(EXIT_FAILURE); - } - printf("%d sanlock_add_lockspace done\n", parent_pid); + printf("%d sanlock_add_lockspace %d\n", parent_pid, rv);
/* * argv[0] = devcount diff --git a/tests/devcountn b/tests/devcountn new file mode 100755 index 0000000..625eb33 --- /dev/null +++ b/tests/devcountn @@ -0,0 +1,73 @@ +#!/bin/bash + +if [ $# -le 3 ]; then + echo "" + echo "Start N devcount commands" + echo "" + echo "devcountn N init LOCKDEV_BASE COUNTDEV_BASE" + echo "devcountn N rw COUNTDEV_BASE SEC1 SEC2 HOSTID" + echo "devcountn N lock LOCKDEV_BASE rw COUNTDEV_BASE SEC1 SEC2 HOSTID" + echo "devcountn N relock LOCKDEV_BASE rw COUNTDEV_BASE SEC1 SEC2 HOSTID" + echo "devcountn N wrap LOCKDEV_BASE rw COUNTDEV_BASE SEC1 SEC2 HOSTID" + echo "devcountn N migrate LOCKDEV_BASE rw COUNTDEV_BASE SEC1 SEC2 HOSTID MAXID" + echo "" + echo "devcount <cmd> LOCKDEV1 rw COUNTDEV1 ..." + echo "devcount <cmd> LOCKDEV2 rw COUNTDEV2 ..." + echo "devcount <cmd> LOCKDEV3 rw COUNTDEV3 ..." + echo ... + echo "devcount <cmd> LOCKDEVN rw COUNTDEVN ..." + echo "" + echo "Examples" + echo "" + echo "devcountn 3 init /dev/lock /dev/count" + echo " devcount init /dev/lock1 /dev/count1" + echo " devcount init /dev/lock2 /dev/count2" + echo " devcount init /dev/lock3 /dev/count3" + echo "" + echo "devcountn 3 rw /dev/count 5 5 1" + echo " devcount rw /dev/count1 5 5 1" + echo " devcount rw /dev/count2 5 5 1" + echo " devcount rw /dev/count3 5 5 1" + echo "" + echo "devcountn 3 lock /dev/lock rw /dev/count 5 5 1" + echo " sanlock add_lockspace -s devcount:1:/dev/lock1:0" + echo " (the add_lockspace command from each subsequent devcount will fail)" + echo " devcount lock /dev/lock1 rw /dev/count1 5 5 1" + echo " devcount lock /dev/lock2 rw /dev/count2 5 5 1" + echo " devcount lock /dev/lock3 rw /dev/count3 5 5 1" + echo "" + exit 0 +fi + +num=$1 +cmd1=$2 + +if [ "$cmd1" != "init" ]; then + deva=$3 + cmd2=$4 + devb=$5 + sec1=$6 + sec2=$7 + hostid=$8 + maxid=$9 + + i=1 + echo sanlock add_lockspace -s devcount:$hostid:$deva$i:0 + sanlock add_lockspace -s devcount:$hostid:$deva$i:0 +fi + +for i in `seq 1 $num`; do + if [ "$cmd1" == "init" ]; then + deva=$3 + devb=$4 + echo ./devcount init $deva$i $devb$i + ./devcount init $deva$i $devb$i + elif [ "$cmd1" == "rw" ] || [ "$cmd1" == "wr" ]; then + echo ./devcount $cmd1 $deva$i $sec1 $sec2 $hostid + ./devcount $cmd1 $deva$i $sec1 $sec2 $hostid & + else + echo ./devcount $cmd1 $deva$i $cmd2 $devb$i $sec1 $sec2 $hostid $maxid + ./devcount $cmd1 $deva$i $cmd2 $devb$i $sec1 $sec2 $hostid $maxid & + fi +done +
sanlock-devel@lists.fedorahosted.org