master - tests: print kernel version
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=a01e2ff81c9e7f...
Commit: a01e2ff81c9e7f629d9011b7d69d9f2780a98484
Parent: b47bdb4dca6eda577206aa76b83697524111d046
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Tue Mar 4 16:24:44 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Tue Mar 4 16:27:00 2014 +0100
tests: print kernel version
---
test/lib/test.sh | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/test/lib/test.sh b/test/lib/test.sh
index 3dc0dfb..d7f6111 100644
--- a/test/lib/test.sh
+++ b/test/lib/test.sh
@@ -67,6 +67,7 @@ export DM_DEV_DIR LVM_SYSTEM_DIR DM_ABORT_ON_INTERNAL_ERRORS
echo "$TESTNAME" >TESTNAME
+echo "Kernel is $(uname -a)"
# Report SELinux mode
if which getenforce &>/dev/null ; then
echo "Selinux mode is \"$(getenforce 2>/dev/null)\"."
10 years, 1 month
master - tests: check readability of /dev/kmsg
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=b47bdb4dca6eda...
Commit: b47bdb4dca6eda577206aa76b83697524111d046
Parent: 30810de1b07a145de8a7629bebcfd0d2e48622a5
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Tue Mar 4 16:22:11 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Tue Mar 4 16:27:00 2014 +0100
tests: check readability of /dev/kmsg
Looks like there are systems with /dev/kmsg device,
which is however not readable
Fix check for result value of klogctl and use only positive value.
---
test/lib/harness.c | 19 ++++++++++++++-----
1 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/test/lib/harness.c b/test/lib/harness.c
index 8b2c3b6..d02e9de 100644
--- a/test/lib/harness.c
+++ b/test/lib/harness.c
@@ -292,9 +292,11 @@ static void clear_dmesg(void)
static void drain_dmesg(void)
{
char buf[1024 * 1024 + 1];
- size_t sz = klogctl(SYSLOG_ACTION_READ_CLEAR, buf, sizeof(buf) - 1);
- buf[sz] = 0;
- _append_buf(buf, sz);
+ int sz = klogctl(SYSLOG_ACTION_READ_CLEAR, buf, sizeof(buf) - 1);
+ if (sz > 0) {
+ buf[sz] = 0;
+ _append_buf(buf, sz);
+ }
}
static const char *duration(time_t start, const struct rusage *usage)
@@ -437,11 +439,18 @@ static void run(int i, char *f) {
if ((fd_kmsg = open("/dev/kmsg", O_RDONLY | O_NONBLOCK)) < 0) {
if (errno != ENOENT) /* Older kernels (<3.5) do not support /dev/kmsg */
perror("open /dev/kmsg");
- else if ((clobber_dmesg = strcmp(getenv("LVM_TEST_CAN_CLOBBER_DMESG") ? : "0", "0")))
- clear_dmesg();
+ } else if (read(fd_kmsg, NULL, 0) == -1) {
+ /* There is /dev/kmsg, but unreadable -> ignore it (RHEL6?) */
+ perror("read /dev/kmsg");
+ close(fd_kmsg);
+ fd_kmsg = -1;
} else if (lseek(fd_kmsg, 0L, SEEK_END) == (off_t) -1)
perror("lseek /dev/kmsg");
+ if ((fd_kmsg < 0) &&
+ (clobber_dmesg = strcmp(getenv("LVM_TEST_CAN_CLOBBER_DMESG") ? : "0", "0")))
+ clear_dmesg();
+
while ((w = wait4(pid, &st, WNOHANG, &usage)) == 0) {
if ((fullbuffer && fullbuffer++ == 8000) ||
(no_write > 180 * 2)) /* a 3 minute timeout */
10 years, 1 month
master - tests: reinstantiate support for klogctl
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=30810de1b07a14...
Commit: 30810de1b07a145de8a7629bebcfd0d2e48622a5
Parent: cb77bdc253e695c7e98b0095cb49a6e4f262e384
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Tue Mar 4 15:10:58 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Tue Mar 4 15:18:19 2014 +0100
tests: reinstantiate support for klogctl
Add a bit more complexity here - Switch to use /dev/kmsg
which has been introduced in 3.5 kernels and could run without
lossing lines from /proc/kmsg.
On older systems user may set env var LVM_TEST_CAN_CLOBBER_DMESG=1
to get kernel messages via klogctl() call (which deletes dmesg buffer)
otherwise no logging of kernel messages is provided.
---
test/Makefile.in | 1 +
test/lib/harness.c | 34 ++++++++++++++++++++++++++++++----
2 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/test/Makefile.in b/test/Makefile.in
index 5c9f5d5..bf1913a 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -66,6 +66,7 @@ help:
@echo " clean Clean dir."
@echo " help Display callable targets."
@echo -e "\nSupported variables:"
+ @echo " LVM_TEST_CAN_CLOBBER_DMESG Allow to clobber dmesg buffer without /dev/kmsg."
@echo " LVM_TEST_DEVDIR Set to '/dev' to run on real /dev."
@echo " LVM_TEST_DIR Where to create test files [$(LVM_TEST_DIR)]."
@echo " LVM_TEST_LOCKING Normal (1), Cluster (3)."
diff --git a/test/lib/harness.c b/test/lib/harness.c
index a9fff9f..8b2c3b6 100644
--- a/test/lib/harness.c
+++ b/test/lib/harness.c
@@ -13,11 +13,13 @@
*/
#define _GNU_SOURCE
+#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/klog.h>
#include <sys/resource.h> /* rusage */
#include <sys/select.h>
#include <sys/socket.h>
@@ -279,6 +281,22 @@ static int drain_fds(int fd1, int fd2, long timeout)
return -1;
}
+#define SYSLOG_ACTION_READ_CLEAR 4
+#define SYSLOG_ACTION_CLEAR 5
+
+static void clear_dmesg(void)
+{
+ klogctl(SYSLOG_ACTION_CLEAR, 0, 0);
+}
+
+static void drain_dmesg(void)
+{
+ char buf[1024 * 1024 + 1];
+ size_t sz = klogctl(SYSLOG_ACTION_READ_CLEAR, buf, sizeof(buf) - 1);
+ buf[sz] = 0;
+ _append_buf(buf, sz);
+}
+
static const char *duration(time_t start, const struct rusage *usage)
{
static char buf[100];
@@ -398,6 +416,7 @@ static void run(int i, char *f) {
struct stat statbuf;
int runaway = 0;
int no_write = 0;
+ int clobber_dmesg = 0;
int collect_debug = 0;
int fd_debuglog = -1;
int fd_kmsg;
@@ -415,10 +434,13 @@ static void run(int i, char *f) {
perror("fopen");
/* Mix-in kernel log message */
- if ((fd_kmsg = open("/proc/kmsg", O_RDONLY | O_NONBLOCK)) < 0)
- perror("open kmsg");
- else if (lseek(fd_kmsg, 0L, SEEK_END) == (off_t) -1)
- perror("lseek kmsg");
+ if ((fd_kmsg = open("/dev/kmsg", O_RDONLY | O_NONBLOCK)) < 0) {
+ if (errno != ENOENT) /* Older kernels (<3.5) do not support /dev/kmsg */
+ perror("open /dev/kmsg");
+ else if ((clobber_dmesg = strcmp(getenv("LVM_TEST_CAN_CLOBBER_DMESG") ? : "0", "0")))
+ clear_dmesg();
+ } else if (lseek(fd_kmsg, 0L, SEEK_END) == (off_t) -1)
+ perror("lseek /dev/kmsg");
while ((w = wait4(pid, &st, WNOHANG, &usage)) == 0) {
if ((fullbuffer && fullbuffer++ == 8000) ||
@@ -458,6 +480,8 @@ static void run(int i, char *f) {
continue;
} else if (ret == (fds[0] + 1))
no_write = 0;
+ if (clobber_dmesg)
+ drain_dmesg();
}
if (w != pid) {
perror("waitpid");
@@ -490,6 +514,8 @@ static void run(int i, char *f) {
if (fd_kmsg >= 0)
close(fd_kmsg);
+ else if (clobber_dmesg)
+ drain_dmesg();
if (outfile)
fclose(outfile);
if (fullbuffer)
10 years, 1 month
master - test: Make teardown (more) resistant to funny DM device names.
by Petr Rockai
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=cb77bdc253e695...
Commit: cb77bdc253e695c7e98b0095cb49a6e4f262e384
Parent: d739e16d85d95611a9f6edbde316c6627307d2ce
Author: Petr Rockai <me(a)mornfall.net>
AuthorDate: Mon Mar 3 23:01:40 2014 +0100
Committer: Petr Rockai <me(a)mornfall.net>
CommitterDate: Tue Mar 4 11:16:00 2014 +0100
test: Make teardown (more) resistant to funny DM device names.
---
test/lib/aux.sh | 4 ++--
test/lib/utils.sh | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/test/lib/aux.sh b/test/lib/aux.sh
index 2d0f805..c178ab5 100644
--- a/test/lib/aux.sh
+++ b/test/lib/aux.sh
@@ -141,7 +141,7 @@ teardown_devs_prefixed() {
local need_udev_wait=0
init_udev_transaction
for dm in $(dm_info name --sort open | grep "$prefix"); do
- dmsetup remove "$dm" &>/dev/null || remfail=yes
+ dmsetup remove --mangle none "$dm" &>/dev/null || remfail=yes
need_udev_wait=1
done
finish_udev_transaction
@@ -154,7 +154,7 @@ teardown_devs_prefixed() {
test $num_devs -lt $num_remaining_devs -a $num_devs -ne 0; do
test "$stray" -eq 0 || echo "Removing $num_devs stray mapped devices with names beginning with $prefix: "
for dm in $(dm_info name --sort open | grep "$prefix") ; do
- dmsetup remove -f "$dm" || true
+ dmsetup remove --mangle none -f "$dm" || true
done
num_remaining_devs=$num_devs
done
diff --git a/test/lib/utils.sh b/test/lib/utils.sh
index 0f58b25..819a0eb 100644
--- a/test/lib/utils.sh
+++ b/test/lib/utils.sh
@@ -159,7 +159,7 @@ teardown_udev_cookies() {
}
dm_info() {
- should dmsetup info --noheadings -c -o "$@"
+ should dmsetup info --mangle none --noheadings -c -o "$@"
}
dm_table() {
10 years, 1 month
master - tests: restore .txt suffix
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=d739e16d85d956...
Commit: d739e16d85d95611a9f6edbde316c6627307d2ce
Parent: 719261a33a34ff177767324089b6daa128c5c2f0
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon Mar 3 19:01:30 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon Mar 3 19:30:48 2014 +0100
tests: restore .txt suffix
---
test/lib/aux.sh | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/test/lib/aux.sh b/test/lib/aux.sh
index f450e63..2d0f805 100644
--- a/test/lib/aux.sh
+++ b/test/lib/aux.sh
@@ -100,7 +100,7 @@ lvmetad_talk() {
nc -U "$TESTDIR/lvmetad.socket"
else
socat "unix-connect:$TESTDIR/lvmetad.socket" -
- fi | tee -a lvmetad-talk.new
+ fi | tee -a lvmetad-talk.txt
}
lvmetad_dump() {
10 years, 1 month
master - tests: speedup kmsg processing
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=719261a33a34ff...
Commit: 719261a33a34ff177767324089b6daa128c5c2f0
Parent: 52007a9191e67b9b6d83fcf8332aceaa4e0f5e48
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon Mar 3 19:08:22 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon Mar 3 19:30:47 2014 +0100
tests: speedup kmsg processing
Since there could be multiple readers of kmsg (test & journald) it needs
to be fast, to capture things like sysrq trace.
But to capture whole output it would need to prioritize reading of kmsg,
thus we would first log kernel messages and followed by command output.
As a trade-off always log command output first and use large drain
buffer so is captures most of messages, but occasionaly miss some
lines.
---
test/lib/harness.c | 92 +++++++++++++++++++++++++++-------------------------
1 files changed, 48 insertions(+), 44 deletions(-)
diff --git a/test/lib/harness.c b/test/lib/harness.c
index 5258c04..a9fff9f 100644
--- a/test/lib/harness.c
+++ b/test/lib/harness.c
@@ -180,7 +180,7 @@ static void _append_buf(const char *buf, size_t len)
kill(-pid, SIGINT);
return;
}
- readbuf_sz = readbuf_sz ? 2 * readbuf_sz : 16384;
+ readbuf_sz = 2 * (readbuf_used + len + readbuf_sz);
readbuf = realloc(readbuf, readbuf_sz);
}
@@ -226,19 +226,17 @@ static const char *_append_with_stamp(const char *buf, int stamp)
return bb;
}
-static void drain(int fd, size_t size_limit)
+static int drain(int fd)
{
- char buf[4096 + 1];
+ char buf[2 * 1024 * 1024 + 1]; /* try to capture large sysrq trace */
const char *bp;
int stamp = 0;
- int sz, total_sz = 0;
+ int sz;
static int stdout_last = -1, stdout_counter = 0;
static int outfile_last = -1, outfile_counter = 0;
- while ((sz = read(fd, buf, sizeof(buf) - 1)) > 0) {
- if (fullbuffer)
- continue;
+ if ((sz = read(fd, buf, sizeof(buf) - 1)) > 0) {
buf[sz] = '\0';
bp = (verbose < 2) ? buf : _append_with_stamp(buf, stamp);
if (sz > (bp - buf)) {
@@ -253,13 +251,32 @@ static void drain(int fd, size_t size_limit)
trickle(stdout, &stdout_last, &stdout_counter);
if (outfile)
trickle(outfile, &outfile_last, &outfile_counter);
-
- total_sz += sz;
- if (total_sz > size_limit) {
- printf("\n...Trimmed output...\n");
- break;
- }
}
+
+ return sz;
+}
+
+static int drain_fds(int fd1, int fd2, long timeout)
+{
+ int ret;
+ fd_set set;
+ struct timeval selectwait = { .tv_usec = timeout };
+
+ FD_ZERO(&set);
+ FD_SET(fd1, &set);
+ if (fd2 >= 0)
+ FD_SET(fd2, &set);
+
+ if ((ret = select(fd2 > fd1 ? fd2 + 1 : fd1 + 1, &set, NULL, NULL, &selectwait)) <= 0)
+ return ret;
+
+ if (FD_ISSET(fd1, &set) && drain(fd1) > 0)
+ return fd1 + 1;
+
+ if (fd2 >= 0 && FD_ISSET(fd2, &set) && drain(fd2) > 0)
+ return fd2 + 1;
+
+ return -1;
}
static const char *duration(time_t start, const struct rusage *usage)
@@ -378,15 +395,13 @@ static void run(int i, char *f) {
char buf[128];
char outpath[PATH_MAX];
char *c = outpath + strlen(results) + 1;
- struct timeval selectwait;
struct stat statbuf;
- fd_set set;
int runaway = 0;
int no_write = 0;
int collect_debug = 0;
int fd_debuglog = -1;
- int fd_kmsg = -1;
- FILE *kmsg;
+ int fd_kmsg;
+ int ret;
//close(fds[1]);
testdirdebug[0] = '\0'; /* Capture RUNTESTDIR */
@@ -400,16 +415,10 @@ static void run(int i, char *f) {
perror("fopen");
/* Mix-in kernel log message */
- if (!(kmsg = fopen("/proc/kmsg", "r")))
- perror("fopen kmsg");
- else if ((fd_kmsg = fileno(kmsg)) >= 0) {
- if ((fcntl(fd_kmsg, F_SETFL, O_NONBLOCK ) == -1)) {
- perror("fcntl kmsg");
- fclose(kmsg);
- kmsg = NULL;
- } else if (fseek(kmsg, 0L, SEEK_END))
- perror("fseek kmsg");
- }
+ if ((fd_kmsg = open("/proc/kmsg", O_RDONLY | O_NONBLOCK)) < 0)
+ perror("open kmsg");
+ else if (lseek(fd_kmsg, 0L, SEEK_END) == (off_t) -1)
+ perror("lseek kmsg");
while ((w = wait4(pid, &st, WNOHANG, &usage)) == 0) {
if ((fullbuffer && fullbuffer++ == 8000) ||
@@ -435,11 +444,7 @@ static void run(int i, char *f) {
break;
}
- FD_ZERO(&set);
- FD_SET(fds[0], &set);
- selectwait.tv_sec = 0;
- selectwait.tv_usec = 500000; /* timeout 0.5s */
- if (select(fds[0] + 1, &set, NULL, NULL, &selectwait) <= 0) {
+ if ((ret = drain_fds(fds[0], fd_kmsg, 500000)) <= 0) {
/* Still checking debug log size if it's not growing too much */
if (!unlimited && testdirdebug[0] &&
(stat(testdirdebug, &statbuf) == 0) &&
@@ -451,26 +456,25 @@ static void run(int i, char *f) {
no_write++;
continue;
- }
- drain(fds[0], INT32_MAX);
- no_write = 0;
- if (fd_kmsg >= 0)
- drain(fd_kmsg, INT32_MAX);
+ } else if (ret == (fds[0] + 1))
+ no_write = 0;
}
if (w != pid) {
perror("waitpid");
exit(206);
}
- drain(fds[0], INT32_MAX);
- if (fd_kmsg >= 0)
- drain(fd_kmsg, INT32_MAX);
+
+ while (!fullbuffer && (drain_fds(fds[0], fd_kmsg, 0) > 0))
+ /* read out what was left */;
+
if (die == 2)
interrupted(i, f);
else if (runaway) {
if (collect_debug &&
(fd_debuglog = open(testdirdebug, O_RDONLY)) != -1) {
- /* Normally read only first 4MB */
- drain(fd_debuglog, unlimited ? INT32_MAX : 4 * 1024 * 1024);
+ runaway = unlimited ? INT32_MAX : 4 * 1024 * 1024;
+ while (!fullbuffer && runaway > 0 && (ret = drain(fd_debuglog)) > 0)
+ runaway -= ret;
close(fd_debuglog);
}
timeout(i, f);
@@ -484,8 +488,8 @@ static void run(int i, char *f) {
} else
failed(i, f, st);
- if (kmsg)
- fclose(kmsg);
+ if (fd_kmsg >= 0)
+ close(fd_kmsg);
if (outfile)
fclose(outfile);
if (fullbuffer)
10 years, 1 month
master - tests: split raid test
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=52007a9191e67b...
Commit: 52007a9191e67b9b6d83fcf8332aceaa4e0f5e48
Parent: a92fae079be1486302343443a813df9ec5bfd2ff
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon Mar 3 11:20:40 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon Mar 3 11:23:57 2014 +0100
tests: split raid test
Use separate files for raid1, raid456, raid10.
They need different target versions to work, so support
more precise test selection.
Optimize duplicate tests of target avalability and skip
unsupported test cases sooner.
---
test/shell/lvchange-raid.sh | 61 ++++++++++++++--------------------------
test/shell/lvchange-raid10.sh | 20 +++++++++++++
test/shell/lvchange-raid456.sh | 22 ++++++++++++++
3 files changed, 63 insertions(+), 40 deletions(-)
diff --git a/test/shell/lvchange-raid.sh b/test/shell/lvchange-raid.sh
index 84c47f2..8fc91a3 100644
--- a/test/shell/lvchange-raid.sh
+++ b/test/shell/lvchange-raid.sh
@@ -11,8 +11,6 @@
. lib/test
-THIN_POSTFIX=""
-
# Writemostly has been in every version since the begining
# Device refresh in 1.5.1 upstream and 1.3.4 < x < 1.4.0 in RHEL6
# Sync action in 1.5.0 upstream and 1.3.3 < x < 1.4.0 in RHEL6
@@ -252,7 +250,7 @@ run_recovery_rate_check() {
local vg=$1
local lv=${2}${THIN_POSTFIX}
- printf "#\n#\n#\n# %s/%s %s: run_recovery_rate_check\n#\n#\n#\n" \
+ printf "#\n#\n#\n# %s/%s (%s): run_recovery_rate_check\n#\n#\n#\n" \
$vg $lv $(get lv_field $vg/$lv segtype -a)
lvchange --minrecoveryrate 50 $vg/$lv
lvchange --maxrecoveryrate 100 $vg/$lv
@@ -276,13 +274,6 @@ run_checks() {
run_refresh_check $1 $2
run_recovery_rate_check $1 $2
elif [ 'thinpool_data' == $3 ]; then
- aux have_thin 1 8 0 || return 0
-
- # RAID works EX in cluster
- # thinpool works EX in cluster
- # but they don't work together in a cluster yet
- # (nor does thinpool+mirror work in a cluster yet)
- test -e LOCAL_CLVMD && return 0
printf "#\n#\n# run_checks: RAID as thinpool data\n#\n#\n"
# Hey, specifying devices for thin allocation doesn't work
@@ -297,8 +288,6 @@ run_checks() {
run_refresh_check $1 $2
run_recovery_rate_check $1 $2
elif [ 'thinpool_meta' == $3 ]; then
- aux have_thin 1 8 0 || return 0
- test -e LOCAL_CLVMD && return 0
printf "#\n#\n# run_checks: RAID as thinpool metadata\n#\n#\n"
lvrename $1/$2 ${2}_meta
@@ -327,35 +316,27 @@ run_checks() {
fi
}
+run_types() {
+ for i in $TEST_TYPES ; do
+ lvcreate -n $lv1 $vg -L2M --type "$@"
+ run_checks $vg $lv1 $i
+ lvremove -ff $vg
+ done
+}
+
########################################################
# MAIN
########################################################
-for i in "-" "snapshot" "thinpool_data" "thinpool_meta"; do
- lvcreate --type raid1 -m 1 -L 2M -n $lv1 $vg \
- "$dev1" "$dev2"
- run_checks $vg $lv1 $i
- lvremove -ff $vg
-
- lvcreate --type raid4 -i 2 -L 2M -n $lv1 $vg \
- "$dev1" "$dev2" "$dev3" "$dev4"
- run_checks $vg $lv1 $i
- lvremove -ff $vg
-
- lvcreate --type raid5 -i 2 -L 2M -n $lv1 $vg \
- "$dev1" "$dev2" "$dev3" "$dev4"
- run_checks $vg $lv1 $i
- lvremove -ff $vg
-
- lvcreate --type raid6 -i 3 -L 2M -n $lv1 $vg \
- "$dev1" "$dev2" "$dev3" "$dev4" "$dev5"
- run_checks $vg $lv1 $i
- lvremove -ff $vg
-
- lvcreate --type raid10 -m 1 -i 2 -L 2M -n $lv1 $vg \
- "$dev1" "$dev2" "$dev3" "$dev4"
- run_checks $vg $lv1 $i
- lvremove -ff $vg
-done
-
-vgremove -ff $vg
+TEST_TYPES="- snapshot"
+# RAID works EX in cluster
+# thinpool works EX in cluster
+# but they don't work together in a cluster yet
+# (nor does thinpool+mirror work in a cluster yet)
+test ! -e LOCAL_CLVMD -a aux have_thin 1 8 0 && TEST_TYPE="$TEST_TYPES thinpool_data thinpool_meta"
+
+# Implicit test for 'raid1' only
+if test "${TEST_RAID:-raid1}" = raid1 ; then
+ run_types raid1 -m 1 "$dev1" "$dev2"
+ vgremove -ff $vg
+fi
diff --git a/test/shell/lvchange-raid10.sh b/test/shell/lvchange-raid10.sh
new file mode 100644
index 0000000..b31c328
--- /dev/null
+++ b/test/shell/lvchange-raid10.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+# Copyright (C) 2014 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+TEST_RAID=raid10
+
+. shell/lvchange-raid.sh
+
+aux target_at_least dm-raid 1 5 2 || skip
+
+run_types raid10 -m 1 -i 2 "$dev1" "$dev2" "$dev3" "$dev4"
+
+vgremove -ff $vg
diff --git a/test/shell/lvchange-raid456.sh b/test/shell/lvchange-raid456.sh
new file mode 100644
index 0000000..41a0dfd
--- /dev/null
+++ b/test/shell/lvchange-raid456.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+# Copyright (C) 2014 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+TEST_RAID=raid456
+
+. shell/lvchange-raid.sh
+
+aux target_at_least dm-raid 1 5 2 || skip
+
+run_types raid4 -i 2 "$dev1" "$dev2" "$dev3" "$dev4"
+run_types raid5 -i 2 "$dev1" "$dev2" "$dev3" "$dev4"
+run_types raid6 -i 3 "$dev1" "$dev2" "$dev3" "$dev4" "$dev5"
+
+vgremove -ff $vg
10 years, 1 month
master - lvmetad: fix minor gcc warning
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=a92fae079be148...
Commit: a92fae079be1486302343443a813df9ec5bfd2ff
Parent: 445c0a5585e196e29cfaef1447e3729ae925751f
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sun Mar 2 22:26:21 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon Mar 3 11:23:32 2014 +0100
lvmetad: fix minor gcc warning
Cast to pass in non-const pointer
---
daemons/lvmetad/lvmetad-core.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/daemons/lvmetad/lvmetad-core.c b/daemons/lvmetad/lvmetad-core.c
index f1fb749..2bbf9e4 100644
--- a/daemons/lvmetad/lvmetad-core.c
+++ b/daemons/lvmetad/lvmetad-core.c
@@ -961,7 +961,7 @@ out_of_mem:
lock_vg(s, vgid_old);
vg_remove_if_missing(s, vgid_old, 1);
unlock_vg(s, vgid_old);
- dm_free(vgid_old);
+ dm_free((char*)vgid_old);
}
return daemon_reply_simple("OK",
10 years, 1 month
master - test: Remove incorrect evaluation
by Marian Csontos
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=445c0a5585e196...
Commit: 445c0a5585e196e29cfaef1447e3729ae925751f
Parent: 6df716332c25a49ca41f9d68e10afca68dc5dd62
Author: Marian Csontos <mcsontos(a)redhat.com>
AuthorDate: Mon Mar 3 08:31:33 2014 +0100
Committer: Marian Csontos <mcsontos(a)redhat.com>
CommitterDate: Mon Mar 3 08:31:33 2014 +0100
test: Remove incorrect evaluation
---
test/shell/lvchange-raid.sh | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/test/shell/lvchange-raid.sh b/test/shell/lvchange-raid.sh
index b6107b9..84c47f2 100644
--- a/test/shell/lvchange-raid.sh
+++ b/test/shell/lvchange-raid.sh
@@ -252,7 +252,7 @@ run_recovery_rate_check() {
local vg=$1
local lv=${2}${THIN_POSTFIX}
- printf "#\n#\n#\n# %s/%s $(%s): run_recovery_rate_check\n#\n#\n#\n" \
+ printf "#\n#\n#\n# %s/%s %s: run_recovery_rate_check\n#\n#\n#\n" \
$vg $lv $(get lv_field $vg/$lv segtype -a)
lvchange --minrecoveryrate 50 $vg/$lv
lvchange --maxrecoveryrate 100 $vg/$lv
10 years, 1 month
master - tests: detect nc or socat
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=6df716332c25a4...
Commit: 6df716332c25a49ca41f9d68e10afca68dc5dd62
Parent: 6c377f5b3c36cc0514210821b3d0b72c10d2a819
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sun Mar 2 21:48:28 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sun Mar 2 21:48:28 2014 +0100
tests: detect nc or socat
Since shell is not in -o pipefail mode here,
we need to generate separate failure ahead of tee.
---
test/lib/aux.sh | 23 ++++++++++++++---------
1 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/test/lib/aux.sh b/test/lib/aux.sh
index 67e046d..f450e63 100644
--- a/test/lib/aux.sh
+++ b/test/lib/aux.sh
@@ -87,15 +87,20 @@ prepare_lvmetad() {
}
lvmetad_talk() {
- if type -p socat >& /dev/null; then
- socat "unix-connect:$TESTDIR/lvmetad.socket" -
- elif echo | nc -U "$TESTDIR/lvmetad.socket"; then
- nc -U "$TESTDIR/lvmetad.socket"
- else
- echo "WARNING: Neither socat nor nc -U seems to be available." 1>&2
- echo "# failed to contact lvmetad"
- exit 1
- fi | tee -a lvmetad-talk.txt
+ local use=nc
+ if type -p socat >& /dev/null; then
+ use=socat
+ elif echo | not nc -U "$TESTDIR/lvmetad.socket" ; then
+ echo "WARNING: Neither socat nor nc -U seems to be available." 1>&2
+ echo "# failed to contact lvmetad"
+ return 1
+ fi
+
+ if test "$use" = nc ; then
+ nc -U "$TESTDIR/lvmetad.socket"
+ else
+ socat "unix-connect:$TESTDIR/lvmetad.socket" -
+ fi | tee -a lvmetad-talk.new
}
lvmetad_dump() {
10 years, 1 month