#!/bin/bash # # loop through all of our bad images and make sure fsck repairs them properly LANG=C SCRIPT_DIR=$(dirname $(readlink -f $0)) TOP=$(readlink -f $SCRIPT_DIR/../) TEST_DEV=${TEST_DEV:-} RESULTS="$TOP/tests/fsck-tests-results.txt" IMAGE="$TOP/tests/test.img" source $TOP/tests/common export TOP export RESULTS export LANG export IMAGE export TEST_DEV rm -f $RESULTS # test rely on corrupting blocks tool check_prereq btrfs-corrupt-block check_prereq btrfs-image check_prereq btrfs check_kernel_support run_one_test() { local testname testname="$1" echo " [TEST/fsck] $(basename $testname)" cd $testname echo "=== Entering $testname" >> $RESULTS if [ -x test.sh ]; then # Type 2 ./test.sh if [ $? -ne 0 ]; then _fail "test failed for case $(basename $testname)" fi else # Type 1 check_all_images `pwd` fi cd $TOP } # Each dir contains one type of error for btrfsck test. # Each dir must be one of the following 2 types: # 1) Only btrfs-image dump # Only contains one or several btrfs-image dumps (.img) # Each image will be tested by generic test routine # (btrfsck --repair and btrfsck). # This is for case that btree-healthy images. # 2) Custom test script # This dir contains test.sh which will do custom image # generation/check/verification. # This is for case btrfs-image can't dump or case needs extra # check/verify for i in $(find $TOP/tests/fsck-tests -maxdepth 1 -mindepth 1 -type d \ ${TEST:+-name "$TEST"} | sort) do run_one_test "$i" done