summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kmo@daterainc.com>2016-10-04 21:30:09 -0800
committerKent Overstreet <kmo@daterainc.com>2016-10-04 21:30:41 -0800
commit23c81d8493b204c053ea800807b65b253a72439d (patch)
treed3562f91480cd5472f60ed635762512d12d05dc3
parent5c4213d4c14eedb773c58163b115aa712f60741b (diff)
auuuuuugh
-rwxr-xr-xktest8
-rwxr-xr-xmake_root_image13
-rw-r--r--parse-test.sh28
-rwxr-xr-xrc.interactive3
-rwxr-xr-xrc.testwrapper16
-rw-r--r--tests/bcache/backingdev.ktest4
-rw-r--r--tests/bcache/backingdev_verify.ktest2
-rw-r--r--tests/bcache/backingdev_writearound.ktest2
-rw-r--r--tests/bcache/backingdev_writethrough.ktest2
-rw-r--r--tests/bcache/bcache-test-libs.sh255
-rw-r--r--tests/bcache/bcachefs-dbench.ktest2
-rw-r--r--tests/bcache/crypto.ktest21
-rw-r--r--tests/bcache/device_add.ktest31
-rw-r--r--tests/bcache/ext4-xfstests.ktest61
-rw-r--r--tests/bcache/flash_dev.ktest20
-rw-r--r--tests/bcache/flash_dev_multi.ktest29
-rw-r--r--tests/bcache/flash_dev_replication.ktest2
-rw-r--r--tests/bcache/flash_dev_small_buckets.ktest2
-rw-r--r--tests/bcache/journal_stress.ktest2
-rwxr-xr-xtests/bcache/mkfs.bcache21
-rw-r--r--tests/bcache/nfs.ktest33
-rw-r--r--tests/bcache/passthrough.ktest2
-rw-r--r--tests/bcache/reboot_tier.ktest32
-rw-r--r--tests/bcache/replication.ktest2
-rw-r--r--tests/bcache/suspend.ktest55
-rw-r--r--tests/bcache/tier.ktest14
-rw-r--r--tests/bcache/tier_multi.ktest31
-rw-r--r--tests/bcache/tier_replication.ktest2
-rw-r--r--tests/bcache/tier_variable_buckets.ktest2
-rw-r--r--tests/bcache/version_torture.ktest58
-rw-r--r--tests/bcache/xfstests.ktest181
-rwxr-xr-xtests/blkdev.ktest4
-rw-r--r--tests/ext4.ktest8
-rw-r--r--tests/prelude.sh14
-rw-r--r--tests/test-libs.sh145
-rw-r--r--tests/xfstests.sh57
-rwxr-xr-xvm-start12
37 files changed, 834 insertions, 342 deletions
diff --git a/ktest b/ktest
index aa0abf3..90e0aed 100755
--- a/ktest
+++ b/ktest
@@ -147,8 +147,6 @@ run_vm()
[[ -n $SCRATCHDIR ]] && VMSTART+=("--scratchdir" "$SCRATCHDIR")
- [[ -n $_SCRATCH ]] && VMSTART+=("--scratchdev" "$_SCRATCH")
-
if [[ $EXIT_ON_SUCCESS = 1 || $INTERACTIVE = 1 ]]; then
case $KERNEL_ARCH in
x86)
@@ -185,13 +183,13 @@ run_vm()
--cdrom="$iso" \
--fs "$OUTPUT_DIR" logfs \
--append="ktest.priority=$PRIORITY" \
- --append="crashkernel=128M" \
--append="log_buf_len=8M" \
--append="quiet" \
--append="$_KERNEL_APPEND" \
--memory="$_MEM" \
--cpus "$_CPUS" \
- --nr_vms="$_NR_VMS"|
+ --nr_vms="$_NR_VMS" \
+ "${_VMSTART_ARGS[@]}"|
{
if [[ $INTERACTIVE = 1 ]]; then
cat
@@ -222,7 +220,7 @@ cmd_boot()
_MEM=1G
_CPUS=6
_NR_VMS=1
- _SCRATCH=""
+ _VMSTART_ARGS=()
FILES=("rc=$KTESTDIR/rc.interactive")
diff --git a/make_root_image b/make_root_image
index cd16960..8da99a1 100755
--- a/make_root_image
+++ b/make_root_image
@@ -29,6 +29,9 @@ PACKAGES+=",linux-tools,blktrace,sysstat,fio,dbench,bonnie++"
PACKAGES+=",bc,attr,gawk,acl"
PACKAGES+=",build-essential"
+# suspend testing:
+PACKAGES+=",uswsusp"
+
# bcache-tools build dependencies:
PACKAGES+=",pkg-config,libnih-dev,libblkid-dev,uuid-dev"
@@ -36,8 +39,12 @@ PACKAGES+=",pkg-config,libnih-dev,libblkid-dev,uuid-dev"
PACKAGES+=",autoconf"
PACKAGES+=",libtool-bin,xfslibs-dev,libattr1-dev,libaio-dev,libgdbm-dev,libacl1-dev"
+# nfs testing:
+PACKAGES+=",nfs-kernel-server"
+
EXCLUDE="dmidecode,nano,rsyslog,logrotate,cron,iptables,nfacct"
EXCLUDE+=",debconf-i18n,info,gnupg"
+EXCLUDE+="libpam-systemd"
MIRROR=http://ftp.us.debian.org/debian/
@@ -131,6 +138,8 @@ ZZ
install -m0755 "$KTESTDIR/rc.local" "$MNT/etc/"
+cp -P "/etc/timezone" "/etc/localtime" "$MNT/etc/"
+
touch "$MNT/etc/resolv.conf"
chmod 644 "$MNT/etc/resolv.conf"
@@ -178,8 +187,6 @@ disown
ZZ
chmod 755 "$MNT/etc/rc.local"
-cp /usr/bin/qemu-${QEMU_BIN%qemu-system-}-static "$MNT/usr/bin"
-
DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \
LC_ALL=C LANGUAGE=C LANG=C chroot "$MNT" /debootstrap/debootstrap --second-stage
@@ -189,6 +196,8 @@ DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \
DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \
LC_ALL=C LANGUAGE=C LANG=C chroot "$MNT" apt update
+rm "$MNT/var/cache/apt/archives/*.deb"
+
# Unmount everything in the root
awk '{print $2}' /proc/mounts|
grep "^$MNT"|
diff --git a/parse-test.sh b/parse-test.sh
index 455a500..dd57055 100644
--- a/parse-test.sh
+++ b/parse-test.sh
@@ -4,12 +4,13 @@ parse_test_deps()
_CPUS="6"
_MEM=""
_TIMEOUT=""
- _SCRATCH=""
_KERNEL_CONFIG_REQUIRE=""
_KERNEL_APPEND=""
_NR_VMS="1"
+ _VMSTART_ARGS=(" ")
TEST_RUNNING=""
+ local NEXT_SCRATCH_DEV="b"
local TEST=$1
local TESTDIR="$(dirname "$TEST")"
@@ -95,10 +96,26 @@ parse_test_deps()
_KERNEL_CONFIG_REQUIRE+=",$1"
}
+ require-kernel-append()
+ {
+ _KERNEL_APPEND+=" $1"
+ }
+
+ scratch-dev()
+ {
+ local dev_size=$1
+ local dev_path="/dev/sd$NEXT_SCRATCH_DEV"
+
+ NEXT_SCRATCH_DEV=$(echo $NEXT_SCRATCH_DEV|tr "a-z" "b-z_")
+
+ _VMSTART_ARGS+=("--scratchdev" "$dev_size")
+
+ echo "$dev_path"
+ }
+
config-scratch-devs()
{
- [[ -n $_SCRATCH ]] && _SCRATCH+=","
- _SCRATCH+="$1"
+ _VMSTART_ARGS+=("--scratchdev" "$1")
}
config-cpus()
@@ -135,11 +152,6 @@ parse_test_deps()
_TIMEOUT=$n
}
- require-kernel-append()
- {
- _KERNEL_APPEND+=" $1"
- }
-
PATH+=":/sbin:/usr/sbin:/usr/local/sbin"
diff --git a/rc.interactive b/rc.interactive
index 7e643bd..5813331 100755
--- a/rc.interactive
+++ b/rc.interactive
@@ -8,6 +8,7 @@ export PS4='+`basename ${BASH_SOURCE[0]}`:${LINENO}:${FUNCNAME[0]:+${FUNCNAME[0]
dmesg -n 7
echo 1 > /proc/sys/kernel/sysrq
+ulimit -c unlimited
# Log file system visible to host
echo "mount logfs"
@@ -18,7 +19,7 @@ mount -t 9p -o trans=virtio logfs $LOGDIR
# Core dump settings
echo 1 > /proc/sys/fs/suid_dumpable
-echo "| /usr/bin/dd of=$LOGDIR/core.%e.PID%p.SIG%s.TIME%t" > /proc/sys/kernel/core_pattern
+echo "|/bin/cp --sparse=always /dev/stdin $LOGDIR/core.%e.PID%p.SIG%s.TIME%t" > /proc/sys/kernel/core_pattern
ulimit -c unlimited
# Virtual block device tweaks
diff --git a/rc.testwrapper b/rc.testwrapper
index 8812a60..51b6116 100755
--- a/rc.testwrapper
+++ b/rc.testwrapper
@@ -48,9 +48,9 @@ copy_to_host()
set +e
fuser -INT -k $LOGDIR $LOGDIR/*
sync
- sleep 1
- fuser -k $LOGDIR $LOGDIR/*
- umount $LOGDIR
+ #sleep 1
+ #fuser -k $LOGDIR $LOGDIR/*
+ #umount $LOGDIR
)
}
@@ -99,6 +99,16 @@ require-kernel-config()
return 0
}
+require-kernel-append()
+{
+ return 0
+}
+
+scratch-dev()
+{
+ return 0
+}
+
config-scratch-devs()
{
return 0
diff --git a/tests/bcache/backingdev.ktest b/tests/bcache/backingdev.ktest
index 307e79a..1c239b0 100644
--- a/tests/bcache/backingdev.ktest
+++ b/tests/bcache/backingdev.ktest
@@ -12,10 +12,12 @@ config-timeout $(stress_timeout)
main()
{
+ (cd $LOGDIR/bcache-tools; make && make install)
+
setup_tracing 'bcache:*'
setup_bcache
test_antagonist
- test_stress
+ test_bcache_stress
stop_bcache
}
diff --git a/tests/bcache/backingdev_verify.ktest b/tests/bcache/backingdev_verify.ktest
index 5f31771..9b34eaa 100644
--- a/tests/bcache/backingdev_verify.ktest
+++ b/tests/bcache/backingdev_verify.ktest
@@ -24,6 +24,6 @@ main()
done
test_antagonist
- test_stress
+ test_bcache_stres
stop_bcache
}
diff --git a/tests/bcache/backingdev_writearound.ktest b/tests/bcache/backingdev_writearound.ktest
index e4f07f6..96eafed 100644
--- a/tests/bcache/backingdev_writearound.ktest
+++ b/tests/bcache/backingdev_writearound.ktest
@@ -18,6 +18,6 @@ main()
setup_bcache
test_antagonist
- test_stress
+ test_bcache_stres
stop_bcache
}
diff --git a/tests/bcache/backingdev_writethrough.ktest b/tests/bcache/backingdev_writethrough.ktest
index 15e2280..76e6306 100644
--- a/tests/bcache/backingdev_writethrough.ktest
+++ b/tests/bcache/backingdev_writethrough.ktest
@@ -15,6 +15,6 @@ main()
setup_bcache
test_antagonist
- test_stress
+ test_bcache_stres
stop_bcache
}
diff --git a/tests/bcache/bcache-test-libs.sh b/tests/bcache/bcache-test-libs.sh
index 5fcb225..8bdba0e 100644
--- a/tests/bcache/bcache-test-libs.sh
+++ b/tests/bcache/bcache-test-libs.sh
@@ -5,9 +5,18 @@
require-lib ../test-libs.sh
-require-bin bcache
+#require-bin bcache
+
+#require-file /home/kent/bcache-tools
require-kernel-config BCACHE,BCACHE_DEBUG
+require-kernel-config COMPACTION
+
+if [[ $KERNEL_ARCH = x86 ]]; then
+ require-kernel-config CRYPTO_CRC32C_INTEL
+ require-kernel-config CRYPTO_POLY1305_X86_64
+ require-kernel-config CRYPTO_CHACHA20_X86_64
+fi
#Expensive:
#require-kernel-config CLOSURE_DEBUG
@@ -150,26 +159,46 @@ bcache_format()
# *) echo "Bad writeback: $WRITEBACK"; exit ;;
#esac
- for cache in $CACHE; do
- flags+=" --cache=$cache"
+# for cache in $CACHE; do
+# flags+=" --cache=$cache"
+# done
+
+# flags+=" --tier=1 --cache_replacement_policy=fifo"
+# for cache in $TIER; do
+# flags+=" --cache=$cache"
+# done
+
+# for bdev in $BDEV; do
+# flags+=" --bdev=$bdev"
+# done
+
+# bcache format \
+# --error_action=panic \
+# "$BUCKET_SIZE" \
+# --btree_node=32k \
+# --block="$BLOCK_SIZE" \
+# --cache_replacement_policy="$REPLACEMENT" \
+# --data_replicas="$DATA_REPLICAS" \
+# --meta_replicas="$META_REPLICAS" \
+# --data_csum_type=crc32c \
+# --compression_type=lz4 \
+# $flags
+
+ for dev in $CACHE; do
+ flags+=" --tier=0 $dev"
done
- flags+=" --tier=1 --cache_replacement_policy=fifo"
- for cache in $TIER; do
- flags+=" --cache=$cache"
+ for dev in $TIER; do
+ flags+=" --tier=1 $dev"
done
- for bdev in $BDEV; do
- flags+=" --bdev=$bdev"
- done
-
- bcache format --metadata_csum_type=crc32c \
+ bcache format \
--error_action=panic \
"$BUCKET_SIZE" \
+ --btree_node=32k \
--block="$BLOCK_SIZE" \
- --cache_replacement_policy="$REPLACEMENT" \
- --data_replicas="$DATA_REPLICAS" \
- --meta_replicas="$META_REPLICAS" \
+ --data_csum_type=crc32c \
+ --compression_type=lz4 \
$flags
}
@@ -265,13 +294,16 @@ setup_bcache() {
stop_volumes()
{
for dev in /sys/block/bcache*/bcache/unregister; do
- echo > $dev
+ echo 1 > $dev
done
+ sleep 1
}
stop_bcache()
{
- echo 1 > /sys/fs/bcache/reboot
+ for dev in /sys/fs/bcache/*/unregister; do
+ echo 1 > $dev
+ done
}
cache_set_settings()
@@ -293,16 +325,16 @@ cache_set_settings()
# Disable damping effect since test cache devices are so small
- [[ -f $dir/internal/tiering_rate_p_term_inverse ]] &&
- echo 1 > $dir/internal/tiering_rate_p_term_inverse
+ #[[ -f $dir/internal/tiering_rate_p_term_inverse ]] &&
+ # echo 1 > $dir/internal/tiering_rate_p_term_inverse
[[ -f $dir/internal/foreground_write_rate_p_term_inverse ]] &&
echo 1 > $dir/internal/foreground_write_rate_p_term_inverse
- for dev in $(ls -d $dir/cache[0-9]*); do
- [[ -f $dev/copy_gc_rate_p_term_inverse ]] &&
- echo 1 > $dev/copy_gc_rate_p_term_inverse
- done
+ #for dev in $(ls -d $dir/cache[0-9]*); do
+ # [[ -f $dev/copy_gc_rate_p_term_inverse ]] &&
+ # echo 1 > $dev/copy_gc_rate_p_term_inverse
+ #done
done
}
@@ -313,11 +345,180 @@ cached_dev_settings()
done
}
+expect_sysfs()
+{
+ prefix=$1
+ name=$2
+ value=$3
+
+ for file in $(echo /sys/fs/bcache/*/${prefix}*/${name}); do
+ if [ -e $file ]; then
+ current="$(cat $file)"
+ if [ "$current" != "$value" ]; then
+ echo "Mismatch for $file: got $current, want $value"
+ exit 1
+ else
+ echo "OK: $file $value"
+ fi
+ fi
+ done
+}
+
+test_sysfs()
+{
+ if [ -d /sys/fs/bcache/*-* ]; then
+ find -H /sys/fs/bcache/ -type f -perm -0400 -exec cat {} \; \
+ > /dev/null
+ find -H /sys/block/*/bcache/ -type f -perm -0400 -exec cat {} \; \
+ > /dev/null
+ fi
+}
+
+antagonist_shrink()
+{
+ while true; do
+ for file in $(find /sys/fs/bcache -name prune_cache); do
+ echo 100000 > $file
+ done
+ sleep 0.5
+ done
+}
+
+antagonist_expensive_debug_checks()
+{
+ # This only exists if CONFIG_BCACHE_DEBUG is on
+ p=/sys/module/bcache/parameters/expensive_debug_checks
+
+ if [ -f $p ]; then
+ while true; do
+ echo 1 > $p
+ sleep 5
+ echo 0 > $p
+ sleep 10
+ done
+ fi
+}
+
+antagonist_trigger_gc()
+{
+ while true; do
+ sleep 5
+ echo 1 | tee /sys/fs/bcache/*/internal/trigger_gc > /dev/null 2>&1 || true
+ done
+}
+
+antagonist_switch_crc()
+{
+ cd /sys/fs/bcache
+
+ while true; do
+ sleep 1
+ echo crc64 | tee */options/data_checksum > /dev/null 2>&1 || true
+ echo crc64 | tee */options/metadata_checksum > /dev/null 2>&1 || true
+ echo crc64 | tee */options/str_hash > /dev/null 2>&1 || true
+ sleep 1
+ echo crc32c | tee */options/data_checksum > /dev/null 2>&1 || true
+ echo crc32c | tee */options/metadata_checksum > /dev/null 2>&1 || true
+ echo crc32c | tee */options/str_hash > /dev/null 2>&1 || true
+ done
+}
+
+test_antagonist()
+{
+ antagonist_expensive_debug_checks &
+ antagonist_shrink &
+ antagonist_sync &
+ antagonist_trigger_gc &
+ antagonist_switch_crc &
+}
+
+test_discard()
+{
+ if [ "${BDEV:-}" == "" -a "${CACHE:-}" == "" ]; then
+ return
+ fi
+
+ killall -STOP systemd-udevd
+
+ if [ -f /sys/kernel/debug/bcache/* ]; then
+ cat /sys/kernel/debug/bcache/* > /dev/null
+ fi
+
+ for dev in $DEVICES; do
+ echo "Discarding ${dev}..."
+ blkdiscard $dev
+ done
+
+ if [[ -f /sys/fs/bcache/*/internal/btree_gc_running ]]; then
+ # Wait for btree GC to finish so that the counts are actually up to date
+ while [ "$(cat /sys/fs/bcache/*/internal/btree_gc_running)" != "0" ]; do
+ sleep 1
+ done
+ fi
+
+ expect_sysfs cache dirty_buckets 0
+ expect_sysfs cache dirty_data 0
+ expect_sysfs cache cached_buckets 0
+ expect_sysfs cache cached_data 0
+ expect_sysfs bdev dirty_data 0
+
+ if [ -f /sys/kernel/debug/bcache/* ]; then
+ tmp="$(mktemp)"
+ cat /sys/kernel/debug/bcache/* | tee "$tmp"
+ lines=$(grep -v discard "$tmp" | wc -l)
+
+ if [ "$lines" != "0" ]; then
+ echo "Btree not empty"
+ false
+ fi
+ fi
+
+ killall -CONT systemd-udevd
+}
+
+test_bcache_stress()
+{
+ enable_faults
+
+ test_sysfs
+ test_fio
+ test_discard
+
+ setup_fs ext4
+ test_dbench
+ test_bonnie
+ test_fsx
+ stop_fs
+ test_discard
+
+ if [ $ktest_priority -gt 0 ]; then
+ setup_fs xfs
+ test_dbench
+ test_bonnie
+ stop_fs
+ test_discard
+ fi
+
+ disable_faults
+}
+
+# some bcachefs tests:
+
setup_bcachefs()
{
- uuid=$(ls -d /sys/fs/bcache/*-*-* | sed -e 's/.*\///')
mkdir -p /mnt/bcachefs
- mount $uuid /mnt/bcachefs
+
+ MNT=""
+ for dev in $CACHE $TIER; do
+ if [[ -z $MNT ]]; then
+ MNT=$dev
+ else
+ MNT=$MNT:$dev
+ fi
+ done
+
+ echo "mount -t bcache $MNT /mnt/bcachefs"
+ mount -t bcache -o verbose_recovery $MNT /mnt/bcachefs
# for fs workloads to know mount point
DEVICES=bcachefs
@@ -331,9 +532,13 @@ stop_bcachefs()
test_bcachefs_stress()
{
setup_bcachefs
+ #enable_faults
+
test_dbench
test_bonnie
- #test_fsx
+ test_fsx
+
+ #disable_faults
stop_bcachefs
}
diff --git a/tests/bcache/bcachefs-dbench.ktest b/tests/bcache/bcachefs-dbench.ktest
index 8729652..750ad77 100644
--- a/tests/bcache/bcachefs-dbench.ktest
+++ b/tests/bcache/bcachefs-dbench.ktest
@@ -23,7 +23,7 @@ main()
test_antagonist
- [ "$NR_REBOOTS" != "$nr_iterations" ] && (sleep 10; do_reboot) &
+ [ "$NR_REBOOTS" != "$nr_iterations" ] && (sleep 20; do_reboot) &
test_dbench
kill %1
diff --git a/tests/bcache/crypto.ktest b/tests/bcache/crypto.ktest
new file mode 100644
index 0000000..33d4f4f
--- /dev/null
+++ b/tests/bcache/crypto.ktest
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+require-lib ../test-libs.sh
+
+require-kernel-config BCACHE
+require-kernel-config BCACHE_DEBUG
+require-file mkfs.bcache
+
+config-scratch-devs 1G
+config-timeout 60
+
+main()
+{
+ (cd $LOGDIR/bcache-tools; make && make install)
+
+ #apt install libscrypt-dev libkeyutils-dev libsodium-dev
+
+ echo "" | bcache format --encrypted /dev/sdb
+ echo "" | bcache unlock /dev/sdb
+ mount -t bcache /dev/sdb /mnt
+}
diff --git a/tests/bcache/device_add.ktest b/tests/bcache/device_add.ktest
index ef6ed14..d7158e9 100644
--- a/tests/bcache/device_add.ktest
+++ b/tests/bcache/device_add.ktest
@@ -4,9 +4,10 @@ require-lib bcache-test-libs.sh
config-cache 512M
config-tier 2G
-config-scratch-devs 1G,1G
+config-scratch-devs 1G
+config-scratch-devs 1G
-config-bucket-size 512k
+config-bucket-size 64k
config-block-size 2k
config-volume 1400M
@@ -16,18 +17,19 @@ config-timeout $(stress_timeout)
main()
{
setup_tracing 'bcache:*'
+ (cd $LOGDIR/bcache-tools; make && make install)
setup_bcache
echo "setup done"
(
sleep 5
- bcacheadm format --bucket=512k --block=2k --tier=1 -C /dev/sdd
+ bcache format --bucket=64k --block=2k --tier=1 -C /dev/sdd
echo "adding device 1"
echo /dev/sdd > /sys/fs/bcache/*/add_device
sleep 5
- bcacheadm format --bucket=512k --block=2k --tier=1 -C /dev/sde
+ bcache format --bucket=64k --block=2k --tier=0 -C /dev/sde
echo "adding device 2"
echo /dev/sde > /sys/fs/bcache/*/add_device
@@ -39,6 +41,7 @@ main()
test_fio
test_discard
+ wait
# Make sure we actually added those devices
devices="$(ls -d /sys/fs/bcache/*/cache[0-9] | wc -l)"
@@ -47,14 +50,18 @@ main()
exit 1
fi
- # Make sure new devices are in tier 1
- for device in cache2 cache3; do
- tier="$(cat /sys/fs/bcache/*/${device}/tier)"
- if [ "$tier" != 1 ]; then
- echo "${device} not in tier 1"
- exit 1
- fi
- done
+ # Make sure new devices are in correct tier
+ tier="$(cat /sys/fs/bcache/*/cache2/tier)"
+ if [ "$tier" != 1 ]; then
+ echo "cache2 not in tier 1"
+ exit 1
+ fi
+
+ tier="$(cat /sys/fs/bcache/*/cache3/tier)"
+ if [ "$tier" != 0 ]; then
+ echo "cache3 not in tier 0"
+ exit 1
+ fi
stop_bcache
}
diff --git a/tests/bcache/ext4-xfstests.ktest b/tests/bcache/ext4-xfstests.ktest
new file mode 100644
index 0000000..5b14303
--- /dev/null
+++ b/tests/bcache/ext4-xfstests.ktest
@@ -0,0 +1,61 @@
+#!/bin/bash
+
+require-lib bcache-test-libs.sh
+
+require-file mkfs.bcache
+require-file xfstests
+
+require-kernel-config FAULT_INJECTION,FAULT_INJECTION_DEBUG_FS,FAIL_MAKE_REQUEST
+require-kernel-config BLK_DEV_DM,DM_FLAKEY
+require-kernel-config USER_NS
+
+require-kernel-config 64BIT=y
+
+#require-file util-linux-2.27~rc1
+#require-file linux-3.13.tar
+
+config-cache 2G
+config-bucket-size 16k
+config-block-size 512
+config-volume 1400M
+
+config-timeout $(stress_timeout)
+
+#config-scratch-devs 11G
+config-scratch-devs 2G
+
+main()
+{
+ useradd fsgqa
+
+ export TEST_DEV=/dev/sdb
+ export TEST_DIR=/mnt/bcachefs
+ export FSTYP=ext4
+ export SCRATCH_DEV=/dev/sdc
+ export SCRATCH_MNT=/mnt/scratch
+
+ mkdir -p $TEST_DIR $SCRATCH_MNT
+
+ mkfs.ext4 $TEST_DEV
+ mount $TEST_DEV $TEST_DIR
+
+ cp -a /cdrom/xfstests /root
+ cd /root/xfstests
+ #make clean && make
+
+ ln -sf /bin/bash /bin/sh
+
+ # stress tests:
+ while true; do
+ ./check generic/127
+
+ #./check generic/019 generic/075 generic/083 \
+ # generic/113 generic/130 generic/269 generic/316
+
+ #./check generic/059 generic/075 generic/091 \
+ # generic/112 generic/127 generic/263 \
+ # generic/313 generic/316
+
+ #./check generic/???
+ done
+}
diff --git a/tests/bcache/flash_dev.ktest b/tests/bcache/flash_dev.ktest
index 5420439..496a7e6 100644
--- a/tests/bcache/flash_dev.ktest
+++ b/tests/bcache/flash_dev.ktest
@@ -2,20 +2,32 @@
require-lib bcache-test-libs.sh
-config-cache 2G
-config-bucket-size 512k
+# XXX possibly broken with 1 mb buckets
+config-cache 2100MB
+config-bucket-size 2M
+
+#config-cache 2G
+#config-bucket-size 512k
+
config-block-size 2k
-config-volume 1400M
+config-volume 1600M
config-timeout $(stress_timeout)
main()
{
+ echo 1 > /sys/module/bcache/parameters/debug_check_bkeys
setup_tracing 'bcache:*'
+ (cd $LOGDIR/bcache-tools; make && make install)
+
setup_bcache
+ #existing_bcache
+
test_antagonist
- test_stress
+ test_bcache_stress
+ #test_fio
+
stop_volumes
test_bcachefs_stress
stop_bcache
diff --git a/tests/bcache/flash_dev_multi.ktest b/tests/bcache/flash_dev_multi.ktest
new file mode 100644
index 0000000..7e15916
--- /dev/null
+++ b/tests/bcache/flash_dev_multi.ktest
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+require-lib bcache-test-libs.sh
+
+config-cache 1G,1G
+config-bucket-size 512k
+config-block-size 2k
+config-volume 1500M
+
+config-timeout $(stress_timeout)
+
+main()
+{
+ echo 1 > /sys/module/bcache/parameters/debug_check_bkeys
+ setup_tracing 'bcache:*'
+
+ (cd $LOGDIR/bcache-tools; make && make install)
+
+ setup_bcache
+ #existing_bcache
+
+ test_antagonist
+ test_bcache_stress
+ #test_fio
+
+ stop_volumes
+ test_bcachefs_stress
+ stop_bcache
+}
diff --git a/tests/bcache/flash_dev_replication.ktest b/tests/bcache/flash_dev_replication.ktest
index ac75b46..70dc43b 100644
--- a/tests/bcache/flash_dev_replication.ktest
+++ b/tests/bcache/flash_dev_replication.ktest
@@ -17,7 +17,7 @@ main()
setup_bcache
test_antagonist
- test_stress
+ test_bcache_stress
stop_volumes
test_bcachefs_stress
stop_bcache
diff --git a/tests/bcache/flash_dev_small_buckets.ktest b/tests/bcache/flash_dev_small_buckets.ktest
index ca7d9a1..a12372c 100644
--- a/tests/bcache/flash_dev_small_buckets.ktest
+++ b/tests/bcache/flash_dev_small_buckets.ktest
@@ -15,7 +15,7 @@ main()
setup_bcache
test_antagonist
- test_stress
+ test_bcache_stress
stop_volumes
test_bcachefs_stress
stop_bcache
diff --git a/tests/bcache/journal_stress.ktest b/tests/bcache/journal_stress.ktest
index 1f2f3d9..4ed1579 100644
--- a/tests/bcache/journal_stress.ktest
+++ b/tests/bcache/journal_stress.ktest
@@ -30,7 +30,7 @@ main()
done
) &
- test_stress
+ test_bcache_stres
stop_volumes
test_bcachefs_stress
stop_bcache
diff --git a/tests/bcache/mkfs.bcache b/tests/bcache/mkfs.bcache
index 2a4570c..dede02f 100755
--- a/tests/bcache/mkfs.bcache
+++ b/tests/bcache/mkfs.bcache
@@ -1,11 +1,14 @@
#!/bin/bash
-#/cdrom/bcache format --error_action=panic --cache $@
-/cdrom/bcache format \
- --error_action=panic \
- --cache $@
-
-# --data_csum_type=crc32c \
-# --compression_type=gzip \
-# --block=512 \
-# --bucket=8k \
+#bcache format -f --error_action=panic --cache $@
+
+cmd=(bcache format)
+cmd+=(-f)
+cmd+=(--error_action=panic)
+cmd+=(--data_checksum_type=crc32c)
+cmd+=(--compression_type=none)
+
+#cmd+=(--block=1k)
+#[[ $@ != *"--fs_size"* ]] && cmd+=(--bucket=8k)
+
+"${cmd[@]}" "$@"
diff --git a/tests/bcache/nfs.ktest b/tests/bcache/nfs.ktest
new file mode 100644
index 0000000..2f9e965
--- /dev/null
+++ b/tests/bcache/nfs.ktest
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+require-lib ../test-libs.sh
+
+require-kernel-config BCACHE,BCACHE_DEBUG
+require-file mkfs.bcache
+
+require-kernel-config NFSD
+require-kernel-config NFSD_V3
+require-kernel-config NFSD_V4
+
+config-scratch-devs 2G
+config-timeout 60
+
+main()
+{
+ #exit 0
+ #apt update
+ #apt install -y nfs-kernel-server
+
+ dpkg -i $LOGDIR/libblkid1_2.28~rc1-1_amd64.deb
+
+ (cd $LOGDIR/bcache-tools; make && make install)
+
+ mkdir /export1 /export2
+
+ mkfs.bcache /dev/sdb
+ mount /dev/sdb /export2
+
+ echo "/export1 *(ro,insecure,all_squash,no_subtree_check)" >> /etc/exports
+ echo "/export2 *(ro,insecure,all_squash,no_subtree_check)" >> /etc/exports
+ exportfs -a
+}
diff --git a/tests/bcache/passthrough.ktest b/tests/bcache/passthrough.ktest
index 4347045..505e7ff 100644
--- a/tests/bcache/passthrough.ktest
+++ b/tests/bcache/passthrough.ktest
@@ -14,6 +14,6 @@ main()
setup_bcache
test_antagonist
- test_stress
+ test_bcache_stress
stop_bcache
}
diff --git a/tests/bcache/reboot_tier.ktest b/tests/bcache/reboot_tier.ktest
new file mode 100644
index 0000000..5b16693
--- /dev/null
+++ b/tests/bcache/reboot_tier.ktest
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+require-lib bcache-test-libs.sh
+
+config-cache 512M
+config-tier 2G
+config-bucket-size 32k
+config-block-size 4k
+config-volume 1600M
+config-cpus 1
+config-timeout 600
+
+main()
+{
+ setup_tracing 'bcache:*'
+ (cd $LOGDIR/bcache-tools; make && make install)
+
+ if [ $NR_REBOOTS -eq 0 ]; then
+ setup_bcache
+ ls /dev/bcache*
+ block_device_dd /dev/bcache0
+ elif [ $NR_REBOOTS -eq 20 ]; then
+ stop_bcache
+ exit
+ else
+ existing_bcache
+ block_device_verify_dd /dev/bcache0
+ echo "test completed"
+ block_device_dd /dev/bcache0
+ fi
+ do_reboot
+}
diff --git a/tests/bcache/replication.ktest b/tests/bcache/replication.ktest
index baa3075..9b1c731 100644
--- a/tests/bcache/replication.ktest
+++ b/tests/bcache/replication.ktest
@@ -18,6 +18,6 @@ main()
setup_bcache
test_antagonist
- test_stress
+ test_bcache_stress
stop_bcache
}
diff --git a/tests/bcache/suspend.ktest b/tests/bcache/suspend.ktest
new file mode 100644
index 0000000..2837b47
--- /dev/null
+++ b/tests/bcache/suspend.ktest
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+require-lib bcache-test-libs.sh
+
+#config-cache 512M
+#config-backing 2G,2G
+#config-bucket-size 64k
+#config-block-size 4k
+#config-writeback
+
+config-cache 2G
+config-bucket-size 512k
+config-block-size 2k
+config-volume 1400M
+
+config-timeout $(stress_timeout)
+
+require-kernel-config PM,SUSPEND,PM_SLEEP,PM_DEBUG
+#require-bin s2ram
+
+require-kernel-append no_console_suspend
+
+main()
+{
+ (cd $LOGDIR/bcache-tools; make && make install)
+ umount $LOGDIR
+
+ apt update; apt install --no-install-recommends -y uswsusp
+
+ #setup_tracing 'bcache:*'
+
+ (
+ p="/sys/power"
+
+ sleep 10
+ echo freezer > $p/pm_test
+ echo freeze > $p/state
+
+ #echo 1 > /sys/fs/bcache/suspend
+ #s2ram --no_kms --force
+ )&
+
+ if false; then
+ bcache_format
+ setup_bcachefs
+
+ test_dbench
+ else
+ setup_bcache
+
+ test_antagonist
+
+ test_stress
+ fi
+}
diff --git a/tests/bcache/tier.ktest b/tests/bcache/tier.ktest
index 435e0a2..f6e3a7e 100644
--- a/tests/bcache/tier.ktest
+++ b/tests/bcache/tier.ktest
@@ -12,12 +12,20 @@ config-timeout $(stress_timeout)
main()
{
+ echo 1 > /sys/module/bcache/parameters/debug_check_bkeys
+
setup_tracing 'bcache:*'
+ (cd $LOGDIR/bcache-tools; make && make install)
setup_bcache
test_antagonist
- test_stress
- stop_volumes
- test_bcachefs_stress
+ test_bcache_stress
+ stop_bcache
+
+ sleep 5
+ existing_bcache
+ test_bcache_stress
stop_bcache
+
+ test_bcachefs_stress
}
diff --git a/tests/bcache/tier_multi.ktest b/tests/bcache/tier_multi.ktest
new file mode 100644
index 0000000..b234ca8
--- /dev/null
+++ b/tests/bcache/tier_multi.ktest
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+require-lib bcache-test-libs.sh
+
+config-cache 512M,512M
+config-tier 2G,2G
+config-bucket-size 64k
+config-block-size 4k
+config-volume 3500M
+
+config-timeout $(stress_timeout)
+
+main()
+{
+ echo 1 > /sys/module/bcache/parameters/debug_check_bkeys
+
+ setup_tracing 'bcache:*'
+ (cd $LOGDIR/bcache-tools; make && make install)
+
+ setup_bcache
+ test_antagonist
+ test_bcache_stress
+ stop_bcache
+
+ sleep 5
+ existing_bcache
+ test_bcache_stress
+ stop_bcache
+
+ test_bcachefs_stress
+}
diff --git a/tests/bcache/tier_replication.ktest b/tests/bcache/tier_replication.ktest
index f5f375f..1474ac5 100644
--- a/tests/bcache/tier_replication.ktest
+++ b/tests/bcache/tier_replication.ktest
@@ -18,7 +18,7 @@ main()
setup_bcache
test_antagonist
- test_stress
+ test_bcache_stress
stop_volumes
test_bcachefs_stress
stop_bcache
diff --git a/tests/bcache/tier_variable_buckets.ktest b/tests/bcache/tier_variable_buckets.ktest
index 7560877..a533f3b 100644
--- a/tests/bcache/tier_variable_buckets.ktest
+++ b/tests/bcache/tier_variable_buckets.ktest
@@ -17,7 +17,7 @@ main()
setup_bcache
test_antagonist
- test_stress
+ test_bcache_stress
stop_volumes
test_bcachefs_stress
stop_bcache
diff --git a/tests/bcache/version_torture.ktest b/tests/bcache/version_torture.ktest
new file mode 100644
index 0000000..a2de38e
--- /dev/null
+++ b/tests/bcache/version_torture.ktest
@@ -0,0 +1,58 @@
+#!/bin/bash
+
+require-lib bcache-test-libs.sh
+
+config-cache 4G
+config-bucket-size 128k
+config-block-size 2k
+config-volume 3G
+
+nr_iterations=10
+config-timeout $(($(stress_timeout) * 2))
+
+require-kernel-config BCACHE_NO_IO
+
+main()
+{
+ setup_tracing 'bcache:*'
+
+ [ "$NR_REBOOTS" == "$nr_iterations" ] && return 0
+
+ if [ $NR_REBOOTS != 0 ]; then
+ existing_bcache
+ sleep 10
+ return 0;
+
+ #echo 1 > /sys/fs/bcache/*/stop
+ #sleep 4
+
+ #echo "Starting another iteration:"
+ fi
+
+ bcacheadm format "$(make_bcache_flags)" \
+ --wipe-bcache --csum-type=crc32c --btree-node=128k \
+ --cache=$CACHE
+ existing_bcache
+ echo 3G > /sys/fs/bcache/*/flash_vol_create
+
+ test_antagonist
+
+ (sleep 30; do_reboot) &
+ #(sleep 30; killall -9 fio) &
+
+ /cdrom/fio --eta=always \
+ --randrepeat=0 \
+ --ioengine=libaio \
+ --iodepth=64 \
+ --iodepth_batch=16 \
+ --direct=1 \
+ --numjobs=1 \
+ --filename=/dev/bcache0 \
+ \
+ --name=randwrite \
+ --rw=randwrite \
+ --bs=4k || true
+
+ #echo 1 > /sys/fs/bcache/*/internal/verify_missing_no_versions
+ sleep 1000
+}
diff --git a/tests/bcache/xfstests.ktest b/tests/bcache/xfstests.ktest
index 5aa180d..b1d5dab 100644
--- a/tests/bcache/xfstests.ktest
+++ b/tests/bcache/xfstests.ktest
@@ -1,136 +1,91 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+require-lib ../xfstests.sh
+#require-lib bcache-test-libs.sh
+require-kernel-config BCACHE
+#require-kernel-config BCACHE_DEBUG
+require-kernel-config COMPACTION
require-file mkfs.bcache
-require-file xfstests
-require-kernel-config FAULT_INJECTION,FAULT_INJECTION_DEBUG_FS,FAIL_MAKE_REQUEST
-require-kernel-config BLK_DEV_DM,DM_FLAKEY,DM_SNAPSHOT
-require-kernel-config USER_NS
-require-kernel-config BLK_DEV,BLK_DEV_LOOP
-
-require-kernel-config CRYPTO_CRC32C_INTEL
-require-kernel-config CRYPTO_POLY1305_X86_64
-require-kernel-config CRYPTO_CHACHA20_X86_64
-
-require-kernel-config 64BIT=y
-
-#require-file util-linux-2.27~rc1
-#require-file linux-3.13.tar
+antagonist_shrink()
+{
+ while true; do
+ for file in $(find /sys/fs/bcache -name prune_cache); do
+ echo 100000 > $file
+ done
+ sleep 0.5
+ done
+}
-config-bucket-size 16k
-config-block-size 512
+antagonist_expensive_debug_checks()
+{
+ # This only exists if CONFIG_BCACHE_DEBUG is on
+ p=/sys/module/bcache/parameters/expensive_debug_checks
+
+ if [ -f $p ]; then
+ while true; do
+ echo 1 > $p
+ sleep 5
+ echo 0 > $p
+ sleep 10
+ done
+ fi
+}
-#config-cache 2G
-#config-scratch-devs 2G
+antagonist_trigger_gc()
+{
+ while true; do
+ sleep 5
+ echo 1 | tee /sys/fs/bcache/*/internal/trigger_gc > /dev/null 2>&1 || true
+ done
+}
-# 038,048,312 require > 10G
-config-cache 14G
-config-scratch-devs 14G
+antagonist_switch_crc()
+{
+ cd /sys/fs/bcache
-config-timeout $(stress_timeout)
+ while true; do
+ sleep 2
+ echo crc64 | tee */options/data_checksum > /dev/null 2>&1 || true
+ echo crc64 | tee */options/metadata_checksum > /dev/null 2>&1 || true
+ echo crc64 | tee */options/str_hash > /dev/null 2>&1 || true
+ #echo lz4 | tee */options/compression > /dev/null 2>&1 || true
+ sleep 2
+ echo crc32c | tee */options/data_checksum > /dev/null 2>&1 || true
+ echo crc32c | tee */options/metadata_checksum > /dev/null 2>&1 || true
+ echo sha1 | tee */options/str_hash > /dev/null 2>&1 || true
+ #echo gzip | tee */options/compression > /dev/null 2>&1 || true
+ done
+}
main()
{
- useradd fsgqa
-
- #systemctl mask systemd-udevd.service
- #systemctl stop systemd-udevd.service
-
- systemctl unmask \
- lvm2-lvmetad.service \
- lvm2-monitor.service \
- lvm2-lvmetad.socket \
- lvm2-activation.service
-
- systemctl start \
- lvm2-lvmetad.service \
- lvm2-monitor.service \
- lvm2-lvmetad.socket
-
- #lvm2-activation-early.service
-
- export TEST_DEV=/dev/sdb
- export TEST_DIR=/mnt/bcachefs
- export FSTYP=bcache
- export SCRATCH_DEV=/dev/sdc
- export SCRATCH_MNT=/mnt/scratch
-
- mkdir -p $TEST_DIR $SCRATCH_MNT
-
+ ulimit -c unlimited
+ #setup_tracing 'bcache:*'
#echo 1 > /sys/module/bcache/parameters/expensive_debug_checks
- #echo 1 > /sys/module/bcache/parameters/debug_check_bkeys
+ echo 1 > /sys/module/bcache/parameters/debug_check_bkeys || true
#echo 1 > /sys/module/bcache/parameters/btree_gc_coalesce_disabled
+ #echo 1 > /sys/module/bcache/parameters/key_merging_disabled
- setup_tracing 'bcache:*'
-
- bcache_format
+ echo "class race frequency 100" > /sys/kernel/debug/dynamic_fault/control
- mount -o data_checksum=crc32c,compression=gzip $CACHE /mnt/bcachefs
+ (cd $LOGDIR/bcache-tools; make && make install)
- #/cdrom/bcache device_show /mnt/bcachefs
- #exit
- #mount $CACHE /mnt/bcachefs
+ #antagonist_expensive_debug_checks &
+ #antagonist_shrink &
+ #antagonist_trigger_gc &
+ #antagonist_switch_crc &
- #cd /mnt/bcachefs
- #tar xf /cdrom/linux-3.13.tar
- #dbench -t 120 20
- #exit
+ # XXX: test with this
+ # apt install -y stress-ng
- #mount -o remount,ro /mnt/bcachefs
- #mount -o remount,rw /mnt/bcachefs
+ # fail when testing different block sizes:
+ #test_xfstests bcache "generic/091 generic/114 generic/240 generic/263"
- #(
- # cd /mnt/bcachefs
- # /cdrom/xfstests/ltp/fsx -N 10000 \
- # -R -W \
- # -P /root \
- # test
- #)
-
- cp -a /cdrom/xfstests /root
- cd /root/xfstests
- #make clean && make
-
- ln -sf /bin/bash /bin/sh
-
- #test_antagonist
- #echo "class race frequency 100" > /sys/kernel/debug/dynamic_fault/control
-
- # -enospc stuff:
- #./check generic/102 generic/274 generic/275
-
- # flakey - locks up:
- #./check generic/081
-
- # stress tests:
- while true; do
- #./check generic/012
- #./check generic/021
- #./check generic/091
- #./check generic/112
- #./check generic/127
- #./check generic/299
-
- #./check generic/019 generic/075 generic/083 \
- # generic/113 generic/130 generic/269 generic/316
-
- #./check generic/059 generic/075 generic/091 \
- # generic/112 generic/127 generic/263 \
- # generic/313 generic/316
-
- #./check generic/299
- ./check generic/???
- done
+ #test_xfstests bcache "generic/019 generic/077"
- ./check generic/102 generic/214 generic/215 generic/237 generic/239 \
- generic/240 generic/241 generic/246 generic/247 generic/248 \
- generic/255 generic/257 generic/263 generic/274 generic/275 \
- generic/277 generic/285
+ test_xfstests bcache "generic/299"
- ./check generic/042 generic/102 generic/106 generic/214 generic/215 \
- generic/239 generic/240 generic/241 generic/246 generic/247 \
- generic/248 generic/255 generic/257 generic/263 generic/274 \
- generic/275 generic/285
+ test_xfstests bcache "generic/???"
}
diff --git a/tests/blkdev.ktest b/tests/blkdev.ktest
index af1c1e5..f6f109d 100755
--- a/tests/blkdev.ktest
+++ b/tests/blkdev.ktest
@@ -8,10 +8,6 @@ config-timeout $(stress_timeout)
main()
{
- #echo "file inode.c +p" > /sys/kernel/debug/dynamic_debug/control
- #echo "file dirent.c +p" > /sys/kernel/debug/dynamic_debug/control
- #echo "file fs.c +p" > /sys/kernel/debug/dynamic_debug/control
-
setup_blkdev
test_stress
}
diff --git a/tests/ext4.ktest b/tests/ext4.ktest
new file mode 100644
index 0000000..258557d
--- /dev/null
+++ b/tests/ext4.ktest
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+require-lib xfstests.sh
+
+main()
+{
+ test_xfstests ext4 "generic/???"
+}
diff --git a/tests/prelude.sh b/tests/prelude.sh
index 509eddf..06d8538 100644
--- a/tests/prelude.sh
+++ b/tests/prelude.sh
@@ -10,6 +10,7 @@ fi
if [[ $KERNEL_ARCH = powerpc ]]; then
require-kernel-config ADVANCED_OPTIONS
fi
+
# Normal kernel functionality:
require-kernel-config PREEMPT
require-kernel-config NO_HZ
@@ -18,9 +19,9 @@ require-kernel-config HIGH_RES_TIMERS
require-kernel-config SYSVIPC
require-kernel-config CGROUPS
-require-kernel-config SLAB
+#require-kernel-config SLAB
require-kernel-config SWAP # systemd segfaults if you don't have swap support...
-require-kernel-config MODULES
+require-kernel-config MODULES,MODULE_UNLOAD
require-kernel-config DEVTMPFS
require-kernel-config DEVTMPFS_MOUNT
require-kernel-config BINFMT_SCRIPT
@@ -31,6 +32,10 @@ require-kernel-config PROC_KCORE # XXX Needed?
require-kernel-config PCI
require-kernel-config VIRTIO_PCI
+# Rng:
+require-kernel-config HW_RANDOM
+require-kernel-config HW_RANDOM_VIRTIO
+
# Clock:
require-kernel-config RTC_CLASS
require-kernel-config RTC_HCTOSYS
@@ -106,6 +111,8 @@ require-kernel-config DEBUG_INFO_DWARF4
require-kernel-config GDB_SCRIPTS
require-kernel-config DEBUG_KERNEL
require-kernel-config PANIC_ON_OOPS
+require-kernel-config DEBUG_RODATA
+require-kernel-config DEBUG_SET_MODULE_RONX
# More expensive
#require-kernel-config DYNAMIC_DEBUG
@@ -127,3 +134,6 @@ require-kernel-config PANIC_ON_OOPS
# expensive, doesn't catch that much
# require-kernel-config DEBUG_PAGEALLOC
+
+require-kernel-config DEBUG_FS
+require-kernel-config DYNAMIC_FAULT
diff --git a/tests/test-libs.sh b/tests/test-libs.sh
index 5f77304..16c451e 100644
--- a/tests/test-libs.sh
+++ b/tests/test-libs.sh
@@ -7,10 +7,6 @@ require-lib prelude.sh
config-mem 2G
-require-kernel-config MD
-require-kernel-config DEBUG_FS,DYNAMIC_FAULT
-require-kernel-config XFS_FS
-
require-make ../ltp-fsx/Makefile ltp-fsx
# Wait for an IP or IPv6 address to show
@@ -200,13 +196,14 @@ test_fio()
cd $LOGDIR
for dev in $DEVICES; do
- fio --eta=always \
+ fio --eta=always \
--randrepeat=0 \
--ioengine=libaio \
--iodepth=64 \
--iodepth_batch=16 \
--direct=1 \
--numjobs=1 \
+ --buffer_compress_percentage=20\
--verify=meta \
--verify_fatal=1 \
--verify_dump=1 \
@@ -259,82 +256,9 @@ test_fsx()
echo "=== done fsx at $(date)"
}
-expect_sysfs()
-{
- prefix=$1
- name=$2
- value=$3
-
- for file in $(echo /sys/fs/bcache/*/${prefix}*/${name}); do
- if [ -e $file ]; then
- current="$(cat $file)"
- if [ "$current" != "$value" ]; then
- echo "Mismatch for $file: got $current, want $value"
- exit 1
- else
- echo "OK: $file $value"
- fi
- fi
- done
-}
-
-test_discard()
-{
- if [ "${BDEV:-}" == "" -a "${CACHE:-}" == "" ]; then
- return
- fi
-
- killall -STOP systemd-udevd
-
- if [ -f /sys/kernel/debug/bcache/* ]; then
- cat /sys/kernel/debug/bcache/* > /dev/null
- fi
-
- for dev in $DEVICES; do
- echo "Discarding ${dev}..."
- blkdiscard $dev
- done
-
- if [[ -f /sys/fs/bcache/*/internal/btree_gc_running ]]; then
- # Wait for btree GC to finish so that the counts are actually up to date
- while [ "$(cat /sys/fs/bcache/*/internal/btree_gc_running)" != "0" ]; do
- sleep 1
- done
- fi
-
- expect_sysfs cache dirty_buckets 0
- expect_sysfs cache dirty_data 0
- expect_sysfs cache cached_buckets 0
- expect_sysfs cache cached_data 0
- expect_sysfs bdev dirty_data 0
-
- if [ -f /sys/kernel/debug/bcache/* ]; then
- tmp="$(mktemp)"
- cat /sys/kernel/debug/bcache/* | tee "$tmp"
- lines=$(grep -v discard "$tmp" | wc -l)
-
- if [ "$lines" != "0" ]; then
- echo "Btree not empty"
- false
- fi
- fi
-
- killall -CONT systemd-udevd
-}
-
# Bcache antagonists
-test_sysfs()
-{
- if [ -d /sys/fs/bcache/*-* ]; then
- find -H /sys/fs/bcache/ -type f -perm -0400 -exec cat {} \; \
- > /dev/null
- find -H /sys/block/*/bcache/ -type f -perm -0400 -exec cat {} \; \
- > /dev/null
- fi
-}
-
-test_fault()
+enable_faults()
{
f=/sys/kernel/debug/dynamic_fault/control
@@ -344,17 +268,17 @@ test_fault()
echo "class race frequency 100" > $f
}
-test_shrink()
+disable_faults()
{
- while true; do
- for file in $(find /sys/fs/bcache -name prune_cache); do
- echo 100000 > $file
- done
- sleep 0.5
- done
+ f=/sys/kernel/debug/dynamic_fault/control
+
+ [[ -f $f ]] || return
+
+ echo "class memory disable" > $f
+ echo "class race disable" > $f
}
-test_sync()
+antagonist_sync()
{
while true; do
sync
@@ -362,7 +286,7 @@ test_sync()
done
}
-test_drop_caches()
+antagonist_drop_caches()
{
echo 4 > /proc/sys/vm/drop_caches
@@ -372,51 +296,6 @@ test_drop_caches()
done
}
-test_expensive_debug_checks()
-{
- # This only exists if CONFIG_BCACHE_DEBUG is on
- if [ -f $dir/internal/expensive_debug_checks ]; then
- while true; do
- echo 1 > $dir/internal/expensive_debug_checks
- sleep 5
- echo 0 > $dir/internal/expensive_debug_checks
- sleep 10
- done
- fi
-}
-
-test_antagonist()
-{
- test_sysfs
-
- test_expensive_debug_checks &
- test_shrink &
- test_fault &
- test_sync &
- test_drop_caches &
-}
-
-test_stress()
-{
- test_fio
- test_discard
-
- setup_fs ext4
- test_dbench
- test_bonnie
- test_fsx
- stop_fs
- test_discard
-
- if [ $ktest_priority -gt 0 ]; then
- setup_fs xfs
- test_dbench
- test_bonnie
- stop_fs
- test_discard
- fi
-}
-
stress_timeout()
{
echo $((($ktest_priority + 3) * 600))
diff --git a/tests/xfstests.sh b/tests/xfstests.sh
new file mode 100644
index 0000000..c19978f
--- /dev/null
+++ b/tests/xfstests.sh
@@ -0,0 +1,57 @@
+# xfstests wrapper:
+
+require-lib test-libs.sh
+
+#require-file xfstests
+
+require-kernel-config FAULT_INJECTION,FAULT_INJECTION_DEBUG_FS,FAIL_MAKE_REQUEST
+require-kernel-config MD,BLK_DEV_DM,DM_FLAKEY,DM_SNAPSHOT
+require-kernel-config BLK_DEV,BLK_DEV_LOOP
+require-kernel-config SCSI_DEBUG=m
+require-kernel-config USER_NS
+
+# 038,048,312 require > 10G
+config-scratch-devs 14G
+config-scratch-devs 14G
+config-timeout $(stress_timeout)
+
+test_xfstests()
+{
+ FSTYP="$1"
+ TESTS="$2"
+
+ export TEST_DEV=/dev/sdb
+ export TEST_DIR=/mnt/test
+ export SCRATCH_DEV=/dev/sdc
+ export SCRATCH_MNT=/mnt/scratch
+ export FSTYP
+
+ (cd $LOGDIR/xfstests; make)
+
+ useradd fsgqa
+ ln -sf /bin/bash /bin/sh
+
+# systemctl mask systemd-udevd.service
+# systemctl stop systemd-udevd.service
+
+ systemctl unmask \
+ lvm2-lvmetad.service \
+ lvm2-monitor.service \
+ lvm2-lvmetad.socket \
+ lvm2-activation.service
+
+ systemctl start \
+ lvm2-lvmetad.service \
+ lvm2-monitor.service \
+ lvm2-lvmetad.socket
+
+ mkdir -p $TEST_DIR $SCRATCH_MNT
+ mkfs.$FSTYP $TEST_DEV
+ mount $TEST_DEV $TEST_DIR
+
+ cd $LOGDIR/xfstests
+ while true; do
+ rm -f results/generic/*
+ ./check $TESTS
+ done
+}
diff --git a/vm-start b/vm-start
index 6ca4251..c9a69d6 100755
--- a/vm-start
+++ b/vm-start
@@ -76,11 +76,10 @@ def vm_run(vmdir, vm_nr):
# Root file system comes first (sda)
cmd.extend(qemu_disk("root", args.image, "snapshot=on,cache=unsafe"))
- for i, size in enumerate(args.scratchdev.split(",")):
- if size.strip():
- drive = os.path.join(vmdir, "vm-%u-disk-%u" % (vm_nr, i))
- subprocess.check_call(["fallocate", "-l", size, drive])
- cmd.extend(qemu_disk("scsi" + str(i), drive, "cache=unsafe"))
+ for i, size in enumerate(args.scratchdev):
+ drive = os.path.join(vmdir, "vm-%u-disk-%u" % (vm_nr, i))
+ subprocess.check_call(["fallocate", "-l", size, drive])
+ cmd.extend(qemu_disk("scsi" + str(i), drive, "cache=unsafe"))
if args.cdrom:
cmd.extend(qemu_disk("scsi-cd", args.cdrom, "", "scsi-cd"))
@@ -266,7 +265,8 @@ parser_start.add_argument("--kgdb", action="store_true",
parser_start.add_argument("-c", "--cdrom",
help="cdrom image")
parser_start.add_argument("-s", "--scratchdev",
- default="",
+ action="append",
+ default=[],
help="list of scratch device sizes. ex: 256M,2G")
parser_start.add_argument("-m", "--memory",
default=DEFAULT_MEMORY,