btrfs-progs/tests/fsck-tests/013-extent-tree-rebuild/test.sh
David Sterba 3e7cc11ecb btrfs-progs: tests: add missing protection against running out of test suite
Executing the script inside the directories as './test.sh' is not
supposed to work but could happen accidentally. With an exit after
attempting to source the we can fix that. Not all cases have been fixed
in f6bbe06c08 ("btrfs-progs: tests: add protection against running
out of test suite").

Signed-off-by: David Sterba <dsterba@suse.com>
2024-06-03 22:37:53 +02:00

43 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
source "$TEST_TOP/common" || exit
check_prereq btrfs-corrupt-block
check_prereq mkfs.btrfs
check_prereq btrfs
setup_root_helper
prepare_test_dev
# test whether fsck can rebuild a corrupted extent tree
test_extent_tree_rebuild()
{
run_check_mkfs_test_dev
run_check_mount_test_dev
generate_dataset small
for i in `seq 1 100`;do
run_check $SUDO_HELPER "$TOP/btrfs" sub snapshot "$TEST_MNT" \
"$TEST_MNT/snapaaaaaaa_$i"
done
run_check_umount_test_dev
# get extent root bytenr
extent_root_bytenr=`$SUDO_HELPER "$TOP/btrfs" inspect-internal dump-tree -r "$TEST_DEV" | \
grep extent | awk '{print $7}'`
if [ -z "$extent_root_bytenr" ];then
_fail "fail to get extent root bytenr"
fi
# corrupt extent root node block
run_check $SUDO_HELPER "$INTERNAL_BIN/btrfs-corrupt-block" -l "$extent_root_bytenr" \
-b 4096 "$TEST_DEV"
$SUDO_HELPER "$TOP/btrfs" check "$TEST_DEV" >& /dev/null && \
_fail "btrfs check should detect failure"
run_check $SUDO_HELPER "$TOP/btrfs" check --repair --force --init-extent-tree "$TEST_DEV"
run_check $SUDO_HELPER "$TOP/btrfs" check "$TEST_DEV"
}
test_extent_tree_rebuild