ext2: add test script for ext2 filesystem.
based on a test script from FreeBSD. this uses fsx and fstorture to exercise the fs, mkfs.ext3 to initialize, e2fsck to check the integrity. single-threaded test is OK, multi-threaded is not. the following blocksizes and features are tested: 1K, 2K and 4K; huge_file, dir_nlink, extent, 64bit, metadata_csum. Change-Id: I948672194bfae0132341183efa4f4af962e2de02 Reviewed-on: https://review.haiku-os.org/c/haiku/+/1843 Reviewed-by: Rene Gollent <[email protected]>
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
Reference in New Issue
Block a user