btrfs-progs: tests: Fix mount fail of 013-extent-tree-rebuild
[platform/upstream/btrfs-progs.git] / tests / fsck-tests / 013-extent-tree-rebuild / test.sh
1 #!/bin/bash
2
3 source $TOP/tests/common
4
5 check_prereq btrfs-debug-tree
6 check_prereq mkfs.btrfs
7 setup_root_helper
8 prepare_test_dev 1G
9
10 # test whether fsck can rebuild a corrupted extent tree
11 test_extent_tree_rebuild()
12 {
13         run_check $SUDO_HELPER $TOP/mkfs.btrfs -f $TEST_DEV
14
15         run_check_mount_test_dev
16         run_check $SUDO_HELPER cp -aR /lib/modules/`uname -r`/ $TEST_MNT
17
18         for i in `seq 1 100`;do
19                 run_check $SUDO_HELPER $TOP/btrfs sub snapshot $TEST_MNT \
20                         $TEST_MNT/snapaaaaaaa_$i
21         done
22         run_check_umount_test_dev
23
24         # get extent root bytenr
25         extent_root_bytenr=`$SUDO_HELPER $TOP/btrfs-debug-tree -r $TEST_DEV | \
26                             grep extent | awk '{print $7}'`
27         if [ -z $extent_root_bytenr ];then
28                 _fail "fail to get extent root bytenr"
29         fi
30
31         # corrupt extent root node block
32         run_check $SUDO_HELPER $TOP/btrfs-corrupt-block -l $extent_root_bytenr \
33                 -b 4096 $TEST_DEV
34
35         $SUDO_HELPER $TOP/btrfs check $TEST_DEV >& /dev/null && \
36                         _fail "btrfs check should detect failure"
37         run_check $SUDO_HELPER $TOP/btrfs check --init-extent-tree $TEST_DEV
38         run_check $SUDO_HELPER $TOP/btrfs check $TEST_DEV
39 }
40
41 test_extent_tree_rebuild