diff options
author | Kent Overstreet <kmo@daterainc.com> | 2016-10-04 21:30:09 -0800 |
---|---|---|
committer | Kent Overstreet <kmo@daterainc.com> | 2016-10-04 21:30:41 -0800 |
commit | 23c81d8493b204c053ea800807b65b253a72439d (patch) | |
tree | d3562f91480cd5472f60ed635762512d12d05dc3 | |
parent | 5c4213d4c14eedb773c58163b115aa712f60741b (diff) |
auuuuuugh
37 files changed, 834 insertions, 342 deletions
@@ -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 +} @@ -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, |