diff --git a/src/tests/add-ons/kernel/file_systems/ext2/extents_test.sh b/src/tests/add-ons/kernel/file_systems/ext2/extents_test.sh new file mode 100644 index 0000000000..ffabe125d3 --- /dev/null +++ b/src/tests/add-ons/kernel/file_systems/ext2/extents_test.sh @@ -0,0 +1,139 @@ +#!/bin/sh + +# This test require specially hacked fsx and fstorture binaries from here: +# https://github.com/thedrgreenthumb/fstools + +TEST_DEV="/dev/disk/ata/1/master/raw" +TEST_MP="/mount" + +MY_PATH=${PWD} + +run_fstorture() # ${1} => block size ${2} => features list +{ + echo "Run test with bs=${1} and features ${2} ..." + + mkfs.ext3 -b ${1} ${2} -F ${TEST_DEV} + dumpe2fs ${TEST_DEV} | grep 'Filesystem features' + + mkdir -p ${TEST_MP} + mount -t ext2 ${TEST_DEV} ${TEST_MP} + + if [ ! -f /bin/fstorture ]; then + echo "Can not find test binary in ${PWD}" + exit 1 + fi + + cp /bin/fstorture ${TEST_MP}/fstorture + + mkdir ${TEST_MP}/root0 ${TEST_MP}/root1 + cd ${TEST_MP} && ./fstorture root0 root1 1 -c 1000 nosoftlinks + + cd ${MY_PATH} + + sleep 5 + + unmount ${TEST_MP} + if [ "$?" -ne "0" ]; then + echo "Can not unmount..." + exit 1 + fi + + e2fsck -f -n ${TEST_DEV} + if [ "$?" -ne "0" ]; then + echo "e2fsck fail" + exit 1 + fi +} + +run_fsx() # ${1} => block size ${2} => features list +{ + echo "Run run_fsx_combined_parallel with bs=${1} and features ${2} ..." + + mkfs.ext3 -b ${1} ${2} -F ${TEST_DEV} + dumpe2fs ${TEST_DEV} | grep 'Filesystem features' + + mkdir -p ${TEST_MP} + mount -t ext2 ${TEST_DEV} ${TEST_MP} + + if [ ! -f /bin/fsx ]; then + echo "Can not find test binary in ${PWD}" + exit 1 + fi + + cp /bin/fsx ${TEST_MP}/fsx + + cd ${TEST_MP} + + NUM_OPS=2000 + SEED=0 + ./fsx -S ${SEED} -N ${NUM_OPS} ./TEST_FILE0 & + ./fsx -S ${SEED} -l 5234123 -o 5156343 -N ${NUM_OPS} ./TEST_FILE1 & + ./fsx -S ${SEED} -l 2311244 -o 2311200 -N ${NUM_OPS} ./TEST_FILE2 & + ./fsx -S ${SEED} -l 8773121 -o 863672 -N ${NUM_OPS} ./TEST_FILE3 & + ./fsx -S ${SEED} -l 234521 -o 234521 -N ${NUM_OPS} ./TEST_FILE4 & + ./fsx -S ${SEED} -l 454321 -o 33 -N ${NUM_OPS} ./TEST_FILE5 & + ./fsx -S ${SEED} -l 7234125 -o 7876728 -N ${NUM_OPS} ./TEST_FILE6 & + ./fsx -S ${SEED} -l 5646463 -o 4626734 -N ${NUM_OPS} ./TEST_FILE7 & + + for job in `jobs -p` + do + wait $job + done + + cd ${MY_PATH} + + sleep 5 + + unmount ${TEST_MP} + if [ "$?" -ne "0" ]; then + echo "Can not unmount..." + exit 1 + fi + + e2fsck -f -n ${TEST_DEV} + if [ "$?" -ne "0" ]; then + echo "e2fsck fail" + exit 1 + fi +} + +# main() +pkgman install -y cmd:fstorture cmd:fsx cmd:e2fsck + +FEATURES="-O huge_file -O dir_nlink -O extent" +run_fsx "1024" "$FEATURES" +run_fstorture "1024" "$FEATURES" + +run_fsx "2048" "$FEATURES" +run_fstorture "2048" "$FEATURES" + +run_fsx "4096" "$FEATURES" +run_fstorture "4096" "$FEATURES" + +#run_fsx "64k" "-O huge_file -O dir_nlink -O extent" +#run_fstorture "64k" "-O huge_file -O dir_nlink -O extent" + +FEATURES="$FEATURES -O 64bit" + +run_fsx "1024" "$FEATURES" +run_fstorture "1024" "$FEATURES" + +run_fsx "2048" "$FEATURES" +run_fstorture "2048" "$FEATURES" + +run_fsx "4096" "$FEATURES" +run_fstorture "4096" "$FEATURES" + +FEATURES="$FEATURES -O metadata_csum" + +run_fsx "1024" "$FEATURES" +run_fstorture "1024" "$FEATURES" + +run_fsx "2048" "$FEATURES" +run_fstorture "2048" "$FEATURES" + +run_fsx "4096" "$FEATURES" +run_fstorture "4096" "$FEATURES" + +echo PASSED +