summaryrefslogtreecommitdiff
path: root/tests/fsck-tests
diff options
context:
space:
mode:
authorDimitri John Ledkov <xnox@ubuntu.com>2017-02-13 11:24:33 +0000
committerDimitri John Ledkov <xnox@ubuntu.com>2017-02-13 11:24:33 +0000
commit4305d024938113df5d73021a09eb2a991f54ca2f (patch)
treed9e7ecc9db14bcc1394607a9e6c644a8b93e9bea /tests/fsck-tests
parente693f0e4ffb1776a05b78264ee3d93d5f07efede (diff)
New upstream release Closes: #849353, #817806, #854915, #845473
Diffstat (limited to 'tests/fsck-tests')
-rwxr-xr-xtests/fsck-tests/013-extent-tree-rebuild/test.sh5
-rw-r--r--tests/fsck-tests/022-qgroup-rescan-halfway/qgroup_rescan_halfway.raw.xzbin0 -> 59360 bytes
-rwxr-xr-xtests/fsck-tests/022-qgroup-rescan-halfway/test.sh19
-rw-r--r--tests/fsck-tests/023-qgroup-stack-overflow/quota_balance_loop_backref.raw.xzbin0 -> 55708 bytes
-rwxr-xr-xtests/fsck-tests/023-qgroup-stack-overflow/test.sh17
-rwxr-xr-xtests/fsck-tests/024-clear-space-cache/test.sh48
6 files changed, 86 insertions, 3 deletions
diff --git a/tests/fsck-tests/013-extent-tree-rebuild/test.sh b/tests/fsck-tests/013-extent-tree-rebuild/test.sh
index ff7d28e5..37bdcd9c 100755
--- a/tests/fsck-tests/013-extent-tree-rebuild/test.sh
+++ b/tests/fsck-tests/013-extent-tree-rebuild/test.sh
@@ -3,7 +3,6 @@
source $TOP/tests/common
check_prereq btrfs-corrupt-block
-check_prereq btrfs-debug-tree
check_prereq mkfs.btrfs
check_prereq btrfs
@@ -16,7 +15,7 @@ test_extent_tree_rebuild()
run_check $SUDO_HELPER $TOP/mkfs.btrfs -f $TEST_DEV
run_check_mount_test_dev
- run_check $SUDO_HELPER cp -aR /lib/modules/`uname -r`/ $TEST_MNT
+ generate_dataset small
for i in `seq 1 100`;do
run_check $SUDO_HELPER $TOP/btrfs sub snapshot $TEST_MNT \
@@ -25,7 +24,7 @@ test_extent_tree_rebuild()
run_check_umount_test_dev
# get extent root bytenr
- extent_root_bytenr=`$SUDO_HELPER $TOP/btrfs-debug-tree -r $TEST_DEV | \
+ 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"
diff --git a/tests/fsck-tests/022-qgroup-rescan-halfway/qgroup_rescan_halfway.raw.xz b/tests/fsck-tests/022-qgroup-rescan-halfway/qgroup_rescan_halfway.raw.xz
new file mode 100644
index 00000000..8cb620f7
--- /dev/null
+++ b/tests/fsck-tests/022-qgroup-rescan-halfway/qgroup_rescan_halfway.raw.xz
Binary files differ
diff --git a/tests/fsck-tests/022-qgroup-rescan-halfway/test.sh b/tests/fsck-tests/022-qgroup-rescan-halfway/test.sh
new file mode 100755
index 00000000..1dc8f8fc
--- /dev/null
+++ b/tests/fsck-tests/022-qgroup-rescan-halfway/test.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+# check whether btrfsck can detect running qgroup rescan
+
+source $TOP/tests/common
+
+check_prereq btrfs
+
+check_image() {
+ local image
+
+ image=$1
+ run_check_stdout $TOP/btrfs check "$image" 2>&1 | \
+ grep -q "Counts for qgroup id"
+ if [ $? -eq 0 ]; then
+ _fail "Btrfs check doesn't detect rescan correctly"
+ fi
+}
+
+check_all_images
diff --git a/tests/fsck-tests/023-qgroup-stack-overflow/quota_balance_loop_backref.raw.xz b/tests/fsck-tests/023-qgroup-stack-overflow/quota_balance_loop_backref.raw.xz
new file mode 100644
index 00000000..a0759739
--- /dev/null
+++ b/tests/fsck-tests/023-qgroup-stack-overflow/quota_balance_loop_backref.raw.xz
Binary files differ
diff --git a/tests/fsck-tests/023-qgroup-stack-overflow/test.sh b/tests/fsck-tests/023-qgroup-stack-overflow/test.sh
new file mode 100755
index 00000000..a304eac5
--- /dev/null
+++ b/tests/fsck-tests/023-qgroup-stack-overflow/test.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+#
+# Check whether btrfs check quota verify will cause stack overflow.
+# This is caused by lack of handling of tree reloc tree.
+# Fixed by patch:
+# btrfs-progs: Fix stack overflow for checking qgroup on tree reloc tree
+
+source $TOP/tests/common
+
+check_prereq btrfs
+
+check_image()
+{
+ run_check $TOP/btrfs check "$1"
+}
+
+check_all_images
diff --git a/tests/fsck-tests/024-clear-space-cache/test.sh b/tests/fsck-tests/024-clear-space-cache/test.sh
new file mode 100755
index 00000000..2945ae87
--- /dev/null
+++ b/tests/fsck-tests/024-clear-space-cache/test.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+# confirm that clearing space cache works
+
+source $TOP/tests/common
+
+check_prereq btrfs
+check_prereq mkfs.btrfs
+
+setup_root_helper
+prepare_test_dev 1G
+
+run_check $SUDO_HELPER $TOP/mkfs.btrfs -f $TEST_DEV
+run_check_mount_test_dev
+
+# Create files that takes at least 3 data chunks, while
+# can still be removed to create free space inside one chunk.
+
+for i in $(seq 0 6); do
+ run_check $SUDO_HELPER dd if=/dev/zero of=$TEST_MNT/file_${i} bs=1M \
+ count=64 > /dev/null 2>&1
+done
+sync
+
+# Remove file 1 3 5 to create holes
+for i in 1 3 5; do
+ run_check $SUDO_HELPER rm $TEST_MNT/file_${i}
+done
+
+sync
+
+run_check_umount_test_dev
+
+# Clear space cache and re-check fs
+run_check $TOP/btrfs check --clear-space-cache v1 $TEST_DEV
+run_check $TOP/btrfs check $TEST_DEV
+
+# Manually recheck space cache and super space cache generation
+run_check_stdout $TOP/btrfs inspect-internal dump-tree -t root $TEST_DEV | \
+ grep -q FREE_SPACE
+if [ $? -eq 0 ]; then
+ _fail "clear space cache doesn't clear all space cache"
+fi
+
+run_check_stdout $TOP/btrfs inspect-internal dump-super $TEST_DEV |
+ grep -q 'cache_generation.*18446744073709551615'
+if [ $? -ne 0 ]; then
+ _fail "clear space cache doesn't set cache_generation correctly"
+fi