summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDimitri John Ledkov <xnox@ubuntu.com>2018-01-11 15:44:55 +0000
committerDimitri John Ledkov <xnox@ubuntu.com>2018-01-11 15:44:55 +0000
commitd78d642bffff6ea49d62c19f26052ed6d3dcc467 (patch)
treedb0f470018ee6f4b93fb8fd601401fa157e5dbe3 /tests
parentb309a4dfbe8130b9fef087df59dd18a487a9c18e (diff)
New upstream release.
Diffstat (limited to 'tests')
-rwxr-xr-xtests/cli-tests/002-balance-full-no-filters/test.sh2
-rwxr-xr-xtests/cli-tests/004-send-parent-multi-subvol/test.sh2
-rwxr-xr-xtests/cli-tests/005-qgroup-show/test.sh2
-rwxr-xr-xtests/cli-tests/008-subvolume-get-set-default/test.sh47
-rw-r--r--tests/common66
-rw-r--r--tests/common.local15
-rwxr-xr-xtests/convert-tests/001-ext2-basic/test.sh2
-rwxr-xr-xtests/convert-tests/002-ext3-basic/test.sh2
-rwxr-xr-xtests/convert-tests/003-ext4-basic/test.sh2
-rwxr-xr-xtests/convert-tests/004-ext2-backup-superblock-ranges/test.sh2
-rwxr-xr-xtests/convert-tests/005-delete-all-rollback/test.sh2
-rwxr-xr-xtests/convert-tests/006-large-hole-extent/test.sh2
-rwxr-xr-xtests/convert-tests/007-unsupported-block-sizes/test.sh2
-rwxr-xr-xtests/convert-tests/008-readonly-image/test.sh2
-rwxr-xr-xtests/convert-tests/009-common-inode-flags/test.sh2
-rwxr-xr-xtests/convert-tests/010-reiserfs-basic/test.sh2
-rwxr-xr-xtests/convert-tests/011-reiserfs-delete-all-rollback/test.sh2
-rwxr-xr-xtests/convert-tests/012-reiserfs-large-hole-extent/test.sh2
-rwxr-xr-xtests/convert-tests/013-reiserfs-common-inode-flags/test.sh2
-rwxr-xr-xtests/convert-tests/014-reiserfs-tail-handling/test.sh2
-rwxr-xr-xtests/convert-tests/015-no-rollback-after-balance/test.sh33
-rw-r--r--tests/fsck-tests/004-no-dir-index/.lowmem_repairable0
-rw-r--r--tests/fsck-tests/009-no-dir-item-or-index/.lowmem_repairable0
-rw-r--r--tests/fsck-tests/010-no-rootdir-inode-item/.lowmem_repairable0
-rw-r--r--tests/fsck-tests/011-no-inode-item/.lowmem_repairable0
-rwxr-xr-xtests/fsck-tests/013-extent-tree-rebuild/test.sh2
-rw-r--r--tests/fsck-tests/016-wrong-inode-nbytes/.lowmem_repairable0
-rw-r--r--tests/fsck-tests/017-missing-all-file-extent/.lowmem_repairable0
-rw-r--r--tests/fsck-tests/020-extent-ref-cases/inline_regular_coexist.imgbin0 -> 4096 bytes
-rw-r--r--tests/fsck-tests/020-extent-ref-cases/keyed_data_ref_only.imgbin0 -> 4096 bytes
-rw-r--r--tests/fsck-tests/020-extent-ref-cases/keyed_data_ref_with_shared_leaf.imgbin0 -> 19456 bytes
-rw-r--r--tests/fsck-tests/020-extent-ref-cases/ref_count_mismatch_false_alert.imgbin0 -> 4096 bytes
-rw-r--r--tests/fsck-tests/020-extent-ref-cases/shared_block_ref_only.raw.xzbin0 -> 217204 bytes
-rwxr-xr-xtests/fsck-tests/020-extent-ref-cases/test.sh17
-rwxr-xr-xtests/fsck-tests/021-partially-dropped-snapshot-case/test.sh16
-rwxr-xr-xtests/fsck-tests/024-clear-space-cache/test.sh2
-rw-r--r--tests/fsck-tests/027-bad-extent-inline-ref-type/bad-extent-inline-ref-type.raw.xzbin0 -> 17144 bytes
-rwxr-xr-xtests/fsck-tests/027-tree-reloc-tree/test.sh19
-rw-r--r--tests/fsck-tests/027-tree-reloc-tree/tree_reloc_for_data_reloc.img.xzbin0 -> 2112 bytes
-rw-r--r--tests/fsck-tests/027-tree-reloc-tree/tree_reloc_for_fs_tree.img.xzbin0 -> 2424 bytes
-rw-r--r--tests/fsck-tests/028-unaligned-super-dev-sizes/dev_and_super_mismatch_unaligned.raw.xzbin0 -> 21536 bytes
-rwxr-xr-xtests/fsck-tests/028-unaligned-super-dev-sizes/test.sh26
-rwxr-xr-xtests/misc-tests/005-convert-progress-thread-crash/test.sh2
-rwxr-xr-xtests/misc-tests/016-send-clone-src/test.sh2
-rwxr-xr-xtests/misc-tests/017-recv-stream-malformatted/test.sh2
-rwxr-xr-xtests/misc-tests/018-recv-end-of-stream/test.sh2
-rwxr-xr-xtests/misc-tests/019-receive-clones-on-mounted-subvol/test.sh (renamed from tests/misc-tests/019-receive-clones-on-munted-subvol/test.sh)0
-rwxr-xr-xtests/mkfs-tests/008-sectorsize-nodesize-combination/test.sh (renamed from tests/mkfs-tests/008-secorsize-nodesize-combination/test.sh)2
48 files changed, 244 insertions, 43 deletions
diff --git a/tests/cli-tests/002-balance-full-no-filters/test.sh b/tests/cli-tests/002-balance-full-no-filters/test.sh
index 0501aad2..0475ea73 100755
--- a/tests/cli-tests/002-balance-full-no-filters/test.sh
+++ b/tests/cli-tests/002-balance-full-no-filters/test.sh
@@ -8,7 +8,7 @@ check_prereq mkfs.btrfs
check_prereq btrfs
setup_root_helper
-prepare_test_dev 2g
+prepare_test_dev
run_check "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev
diff --git a/tests/cli-tests/004-send-parent-multi-subvol/test.sh b/tests/cli-tests/004-send-parent-multi-subvol/test.sh
index 49226f9b..c1348b50 100755
--- a/tests/cli-tests/004-send-parent-multi-subvol/test.sh
+++ b/tests/cli-tests/004-send-parent-multi-subvol/test.sh
@@ -8,7 +8,7 @@ check_prereq mkfs.btrfs
check_prereq btrfs
setup_root_helper
-prepare_test_dev 2g
+prepare_test_dev
run_check "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev
diff --git a/tests/cli-tests/005-qgroup-show/test.sh b/tests/cli-tests/005-qgroup-show/test.sh
index 2af13033..d9a91831 100755
--- a/tests/cli-tests/005-qgroup-show/test.sh
+++ b/tests/cli-tests/005-qgroup-show/test.sh
@@ -8,7 +8,7 @@ check_prereq mkfs.btrfs
check_prereq btrfs
setup_root_helper
-prepare_test_dev 2g
+prepare_test_dev
run_check "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev
diff --git a/tests/cli-tests/008-subvolume-get-set-default/test.sh b/tests/cli-tests/008-subvolume-get-set-default/test.sh
new file mode 100755
index 00000000..9318002e
--- /dev/null
+++ b/tests/cli-tests/008-subvolume-get-set-default/test.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+# test for "subvolume get-default/set-default"
+
+check_default_id()
+{
+ id=$(run_check_stdout $SUDO_HELPER "$TOP/btrfs" subvolume get-default .) \
+ || { echo "$id"; exit 1; }
+ if $(echo "$id" | grep -vq "ID $1"); then
+ _fail "subvolume get-default: default id is not $1, but $id"
+ fi
+}
+
+source "$TOP/tests/common"
+
+check_prereq mkfs.btrfs
+check_prereq btrfs
+
+setup_root_helper
+prepare_test_dev
+
+run_check "$TOP/mkfs.btrfs" -f "$TEST_DEV"
+run_check_mount_test_dev
+cd "$TEST_MNT"
+
+check_default_id 5
+
+# check "subvol set-default <subvolid> <path>"
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume create sub
+id=$(run_check_stdout "$TOP/btrfs" inspect-internal rootid sub)
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume set-default "$id" .
+check_default_id "$id"
+
+run_mustfail "set-default to non existent id" \
+ $SUDO_HELPER "$TOP/btrfs" subvolume set-default 100 .
+
+# check "subvol set-default <subvolume>"
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume create sub2
+id=$(run_check_stdout "$TOP/btrfs" inspect-internal rootid sub2)
+run_check $SUDO_HELPER "$TOP/btrfs" subvolume set-default ./sub2
+check_default_id "$id"
+
+run_check $SUDO_HELPER mkdir sub2/dir
+run_mustfail "set-default to normal directory" \
+ $SUDO_HELPER "$TOP/btrfs" subvolume set-default ./sub2/dir
+
+cd ..
+run_check_umount_test_dev
diff --git a/tests/common b/tests/common
index eb525a4d..734cd171 100644
--- a/tests/common
+++ b/tests/common
@@ -236,6 +236,58 @@ run_mustfail()
fi
}
+# The first parameter is error message to print if it fails, just like
+# run_must_fail().
+# NOTE: we don't use pipefail to avoid disturbing other script, so here we
+# use a temporary output file.
+# So it doesn't support pipeline in the @cmd
+run_mustfail_stdout()
+{
+ local spec
+ local ins
+ local cmd
+ local msg
+ local ret
+ local tmp_output
+
+ tmp_output=$(mktemp --tmpdir btrfs-progs-test--mustfail-stdtout.XXXXXX)
+
+ msg="$1"
+ shift
+
+ if _is_file_or_command "$msg"; then
+ echo "ASSERTION FAIL: 1st argument of run_mustfail_stdout must be a message"
+ exit 1
+ fi
+
+ ins=$(_get_spec_ins "$@")
+ spec=$(($ins-1))
+ cmd=$(eval echo "\${$spec}")
+ spec=$(_cmd_spec "${@:$spec}")
+ set -- "${@:1:$(($ins-1))}" $spec "${@: $ins}"
+ echo "############### $@" >> "$RESULTS" 2>&1
+ if [[ $TEST_LOG =~ tty ]]; then echo "CMD(mustfail): $@" > /dev/tty; fi
+ if [ "$1" = 'root_helper' ]; then
+ "$@" 2>&1 > "$tmp_output"
+ else
+ $INSTRUMENT "$@" 2>&1 > "$tmp_output"
+ fi
+ ret=$?
+
+ cat "$tmp_output" >> "$RESULTS"
+ cat "$tmp_output"
+ rm "$tmp_output"
+
+ if [ "$ret" != 0 ]; then
+ echo "failed (expected): $@" >> "$RESULTS"
+ return 0
+ else
+ echo "succeeded (unexpected!): $@" >> "$RESULTS"
+ _fail "unexpected success: $msg"
+ return 1
+ fi
+}
+
check_prereq()
{
if ! [ -f "$TOP/$1" ]; then
@@ -389,8 +441,12 @@ prepare_test_dev()
# num[K/M/G/T...]
local size="$1"
- [[ "$TEST_DEV" ]] && return
[[ "$size" ]] || size='2G'
+ # Still truncate it to new size
+ if [ -n "$TEST_DEV" ]; then
+ truncate -s "$size" "$TEST_DEV"
+ return;
+ fi
echo "\$TEST_DEV not given, use $TOP/test/test.img as fallback" >> \
"$RESULTS"
@@ -428,8 +484,12 @@ run_check_umount_test_dev()
check_kernel_support()
{
if ! grep -iq 'btrfs' /proc/filesystems; then
- echo "WARNING: btrfs filesystem not listed in /proc/filesystems, some tests might fail"
- return 1
+ run_check $SUDO_HELPER modprobe btrfs
+ if ! grep -iq 'btrfs' /proc/filesystems; then
+ echo \
+"WARNING: btrfs filesystem not found in /proc/filesystems, some tests might fail"
+ return 1
+ fi
fi
return 0
}
diff --git a/tests/common.local b/tests/common.local
index d2b8d073..f5e96f5b 100644
--- a/tests/common.local
+++ b/tests/common.local
@@ -14,11 +14,24 @@ fi
# gets arguments of a current command and can decide if the argument insertion
# should happen, eg. if some option combination does not make sense or would
# break tests
+#
+# Return 0 if we need to skip option override
+# Return 1 if we don't need to skip option override
_skip_spec()
{
+ local beacon
+
+ beacon=.lowmem_repairable
+
+ # For lowmem repair, only support fs tree repair for now
+ # So we place lowmem repair beacon in the same dir of the test case
if echo "$TEST_ARGS_CHECK" | grep -q 'mode=lowmem' &&
echo "$@" | grep -q -- '--repair'; then
- return 0
+ dir="$(dirname ${@: -1})"
+ if [ -f ${dir}/${beacon} ]; then
+ return 1;
+ fi
+ return 0;
fi
return 1
}
diff --git a/tests/convert-tests/001-ext2-basic/test.sh b/tests/convert-tests/001-ext2-basic/test.sh
index d94bf0b6..af75d948 100755
--- a/tests/convert-tests/001-ext2-basic/test.sh
+++ b/tests/convert-tests/001-ext2-basic/test.sh
@@ -4,7 +4,7 @@ source "$TOP/tests/common"
source "$TOP/tests/common.convert"
setup_root_helper
-prepare_test_dev 512M
+prepare_test_dev
check_prereq btrfs-convert
check_global_prereq mke2fs
diff --git a/tests/convert-tests/002-ext3-basic/test.sh b/tests/convert-tests/002-ext3-basic/test.sh
index f00e0e82..233e2d94 100755
--- a/tests/convert-tests/002-ext3-basic/test.sh
+++ b/tests/convert-tests/002-ext3-basic/test.sh
@@ -4,7 +4,7 @@ source "$TOP/tests/common"
source "$TOP/tests/common.convert"
setup_root_helper
-prepare_test_dev 512M
+prepare_test_dev
check_prereq btrfs-convert
check_global_prereq mke2fs
diff --git a/tests/convert-tests/003-ext4-basic/test.sh b/tests/convert-tests/003-ext4-basic/test.sh
index d33f1d9a..baf6115c 100755
--- a/tests/convert-tests/003-ext4-basic/test.sh
+++ b/tests/convert-tests/003-ext4-basic/test.sh
@@ -4,7 +4,7 @@ source "$TOP/tests/common"
source "$TOP/tests/common.convert"
setup_root_helper
-prepare_test_dev 512M
+prepare_test_dev
check_prereq btrfs-convert
check_global_prereq mke2fs
diff --git a/tests/convert-tests/004-ext2-backup-superblock-ranges/test.sh b/tests/convert-tests/004-ext2-backup-superblock-ranges/test.sh
index 0ce62f78..cf354d40 100755
--- a/tests/convert-tests/004-ext2-backup-superblock-ranges/test.sh
+++ b/tests/convert-tests/004-ext2-backup-superblock-ranges/test.sh
@@ -18,7 +18,7 @@ check_global_prereq e2fsck
check_global_prereq xzcat
setup_root_helper
-prepare_test_dev 512M
+prepare_test_dev
# override common function
function check_image() {
diff --git a/tests/convert-tests/005-delete-all-rollback/test.sh b/tests/convert-tests/005-delete-all-rollback/test.sh
index 19aa76d4..31fa2c4b 100755
--- a/tests/convert-tests/005-delete-all-rollback/test.sh
+++ b/tests/convert-tests/005-delete-all-rollback/test.sh
@@ -6,7 +6,7 @@ source "$TOP/tests/common"
source "$TOP/tests/common.convert"
setup_root_helper
-prepare_test_dev 512M
+prepare_test_dev
check_prereq btrfs-convert
check_global_prereq mke2fs
diff --git a/tests/convert-tests/006-large-hole-extent/test.sh b/tests/convert-tests/006-large-hole-extent/test.sh
index 0edb6280..38e97055 100755
--- a/tests/convert-tests/006-large-hole-extent/test.sh
+++ b/tests/convert-tests/006-large-hole-extent/test.sh
@@ -9,7 +9,7 @@ source "$TOP/tests/common"
source "$TOP/tests/common.convert"
setup_root_helper
-prepare_test_dev 512M
+prepare_test_dev
check_prereq btrfs-convert
check_global_prereq mke2fs
diff --git a/tests/convert-tests/007-unsupported-block-sizes/test.sh b/tests/convert-tests/007-unsupported-block-sizes/test.sh
index f1b29726..ef010202 100755
--- a/tests/convert-tests/007-unsupported-block-sizes/test.sh
+++ b/tests/convert-tests/007-unsupported-block-sizes/test.sh
@@ -5,7 +5,7 @@ source "$TOP/tests/common"
source "$TOP/tests/common.convert"
setup_root_helper
-prepare_test_dev 512M
+prepare_test_dev
check_prereq btrfs-convert
check_global_prereq mke2fs
diff --git a/tests/convert-tests/008-readonly-image/test.sh b/tests/convert-tests/008-readonly-image/test.sh
index 8551fb9b..064bc271 100755
--- a/tests/convert-tests/008-readonly-image/test.sh
+++ b/tests/convert-tests/008-readonly-image/test.sh
@@ -5,7 +5,7 @@ source "$TOP/tests/common"
source "$TOP/tests/common.convert"
setup_root_helper
-prepare_test_dev 512M
+prepare_test_dev
check_prereq btrfs-convert
check_global_prereq mke2fs
diff --git a/tests/convert-tests/009-common-inode-flags/test.sh b/tests/convert-tests/009-common-inode-flags/test.sh
index cd7b5111..6d159993 100755
--- a/tests/convert-tests/009-common-inode-flags/test.sh
+++ b/tests/convert-tests/009-common-inode-flags/test.sh
@@ -5,7 +5,7 @@ source "$TOP/tests/common"
source "$TOP/tests/common.convert"
setup_root_helper
-prepare_test_dev 512M
+prepare_test_dev
check_prereq btrfs-convert
check_global_prereq mke2fs
check_global_prereq lsattr
diff --git a/tests/convert-tests/010-reiserfs-basic/test.sh b/tests/convert-tests/010-reiserfs-basic/test.sh
index 261f8704..87008f15 100755
--- a/tests/convert-tests/010-reiserfs-basic/test.sh
+++ b/tests/convert-tests/010-reiserfs-basic/test.sh
@@ -8,7 +8,7 @@ if ! check_kernel_support_reiserfs >/dev/null; then
fi
setup_root_helper
-prepare_test_dev 512M
+prepare_test_dev
check_prereq btrfs-convert
check_global_prereq mkreiserfs
diff --git a/tests/convert-tests/011-reiserfs-delete-all-rollback/test.sh b/tests/convert-tests/011-reiserfs-delete-all-rollback/test.sh
index c6c3119e..0b8366c8 100755
--- a/tests/convert-tests/011-reiserfs-delete-all-rollback/test.sh
+++ b/tests/convert-tests/011-reiserfs-delete-all-rollback/test.sh
@@ -9,7 +9,7 @@ if ! check_kernel_support_reiserfs >/dev/null; then
fi
setup_root_helper
-prepare_test_dev 512M
+prepare_test_dev
check_prereq btrfs-convert
check_global_prereq mkreiserfs
diff --git a/tests/convert-tests/012-reiserfs-large-hole-extent/test.sh b/tests/convert-tests/012-reiserfs-large-hole-extent/test.sh
index 7a8d4972..dde1b3eb 100755
--- a/tests/convert-tests/012-reiserfs-large-hole-extent/test.sh
+++ b/tests/convert-tests/012-reiserfs-large-hole-extent/test.sh
@@ -13,7 +13,7 @@ if ! check_kernel_support_reiserfs >/dev/null; then
fi
setup_root_helper
-prepare_test_dev 512M
+prepare_test_dev
check_prereq btrfs-convert
check_global_prereq mkreiserfs
diff --git a/tests/convert-tests/013-reiserfs-common-inode-flags/test.sh b/tests/convert-tests/013-reiserfs-common-inode-flags/test.sh
index e242a3b0..a15240ce 100755
--- a/tests/convert-tests/013-reiserfs-common-inode-flags/test.sh
+++ b/tests/convert-tests/013-reiserfs-common-inode-flags/test.sh
@@ -9,7 +9,7 @@ if ! check_kernel_support_reiserfs >/dev/null; then
fi
setup_root_helper
-prepare_test_dev 512M
+prepare_test_dev
check_prereq btrfs-convert
check_global_prereq mkreiserfs
check_global_prereq chattr
diff --git a/tests/convert-tests/014-reiserfs-tail-handling/test.sh b/tests/convert-tests/014-reiserfs-tail-handling/test.sh
index f6131d96..335c0091 100755
--- a/tests/convert-tests/014-reiserfs-tail-handling/test.sh
+++ b/tests/convert-tests/014-reiserfs-tail-handling/test.sh
@@ -14,7 +14,7 @@ if ! check_kernel_support_reiserfs >/dev/null; then
fi
setup_root_helper
-prepare_test_dev 512M
+prepare_test_dev
check_prereq btrfs-convert
check_global_prereq md5sum
check_global_prereq mkreiserfs
diff --git a/tests/convert-tests/015-no-rollback-after-balance/test.sh b/tests/convert-tests/015-no-rollback-after-balance/test.sh
new file mode 100755
index 00000000..47c9c6fa
--- /dev/null
+++ b/tests/convert-tests/015-no-rollback-after-balance/test.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+# Check if btrfs-convert refuses to rollback the filesystem, and leave the fs
+# and the convert image untouched
+
+source "$TOP/tests/common"
+source "$TOP/tests/common.convert"
+
+setup_root_helper
+prepare_test_dev
+check_prereq btrfs-convert
+check_global_prereq mke2fs
+
+# convert_test_prep_fs() will create large enough file inside the test device,
+# that's good enough for us to test rollback failure.
+convert_test_prep_fs ext4 mke2fs -t ext4 -b 4096
+run_check_umount_test_dev
+convert_test_do_convert "" 4096
+
+run_check_mount_test_dev
+
+# Now the fs is converted, balance it so later rollback should fail
+run_check $SUDO_HELPER "$TOP/btrfs" balance start --full-balance "$TEST_MNT"
+run_check_umount_test_dev
+
+# rollback should fail
+run_mustfail "rollback fs after balance" "$TOP/btrfs-convert" -r "$TEST_DEV"
+
+# Ensure the fs and convert image can pass the check
+run_check "$TOP/btrfs" check "$TEST_DEV"
+
+run_check_mount_test_dev
+run_check $SUDO_HELPER e2fsck -fn "$TEST_MNT/ext2_saved/image"
+run_check_umount_test_dev
diff --git a/tests/fsck-tests/004-no-dir-index/.lowmem_repairable b/tests/fsck-tests/004-no-dir-index/.lowmem_repairable
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/fsck-tests/004-no-dir-index/.lowmem_repairable
diff --git a/tests/fsck-tests/009-no-dir-item-or-index/.lowmem_repairable b/tests/fsck-tests/009-no-dir-item-or-index/.lowmem_repairable
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/fsck-tests/009-no-dir-item-or-index/.lowmem_repairable
diff --git a/tests/fsck-tests/010-no-rootdir-inode-item/.lowmem_repairable b/tests/fsck-tests/010-no-rootdir-inode-item/.lowmem_repairable
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/fsck-tests/010-no-rootdir-inode-item/.lowmem_repairable
diff --git a/tests/fsck-tests/011-no-inode-item/.lowmem_repairable b/tests/fsck-tests/011-no-inode-item/.lowmem_repairable
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/fsck-tests/011-no-inode-item/.lowmem_repairable
diff --git a/tests/fsck-tests/013-extent-tree-rebuild/test.sh b/tests/fsck-tests/013-extent-tree-rebuild/test.sh
index 90fe2e83..d71c1b2e 100755
--- a/tests/fsck-tests/013-extent-tree-rebuild/test.sh
+++ b/tests/fsck-tests/013-extent-tree-rebuild/test.sh
@@ -7,7 +7,7 @@ check_prereq mkfs.btrfs
check_prereq btrfs
setup_root_helper
-prepare_test_dev 1G
+prepare_test_dev
# test whether fsck can rebuild a corrupted extent tree
test_extent_tree_rebuild()
diff --git a/tests/fsck-tests/016-wrong-inode-nbytes/.lowmem_repairable b/tests/fsck-tests/016-wrong-inode-nbytes/.lowmem_repairable
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/fsck-tests/016-wrong-inode-nbytes/.lowmem_repairable
diff --git a/tests/fsck-tests/017-missing-all-file-extent/.lowmem_repairable b/tests/fsck-tests/017-missing-all-file-extent/.lowmem_repairable
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/fsck-tests/017-missing-all-file-extent/.lowmem_repairable
diff --git a/tests/fsck-tests/020-extent-ref-cases/inline_regular_coexist.img b/tests/fsck-tests/020-extent-ref-cases/inline_regular_coexist.img
new file mode 100644
index 00000000..cf15cc14
--- /dev/null
+++ b/tests/fsck-tests/020-extent-ref-cases/inline_regular_coexist.img
Binary files differ
diff --git a/tests/fsck-tests/020-extent-ref-cases/keyed_data_ref_only.img b/tests/fsck-tests/020-extent-ref-cases/keyed_data_ref_only.img
new file mode 100644
index 00000000..668589f4
--- /dev/null
+++ b/tests/fsck-tests/020-extent-ref-cases/keyed_data_ref_only.img
Binary files differ
diff --git a/tests/fsck-tests/020-extent-ref-cases/keyed_data_ref_with_shared_leaf.img b/tests/fsck-tests/020-extent-ref-cases/keyed_data_ref_with_shared_leaf.img
new file mode 100644
index 00000000..2ce5068f
--- /dev/null
+++ b/tests/fsck-tests/020-extent-ref-cases/keyed_data_ref_with_shared_leaf.img
Binary files differ
diff --git a/tests/fsck-tests/020-extent-ref-cases/ref_count_mismatch_false_alert.img b/tests/fsck-tests/020-extent-ref-cases/ref_count_mismatch_false_alert.img
new file mode 100644
index 00000000..85110a81
--- /dev/null
+++ b/tests/fsck-tests/020-extent-ref-cases/ref_count_mismatch_false_alert.img
Binary files differ
diff --git a/tests/fsck-tests/020-extent-ref-cases/shared_block_ref_only.raw.xz b/tests/fsck-tests/020-extent-ref-cases/shared_block_ref_only.raw.xz
new file mode 100644
index 00000000..538fb4f2
--- /dev/null
+++ b/tests/fsck-tests/020-extent-ref-cases/shared_block_ref_only.raw.xz
Binary files differ
diff --git a/tests/fsck-tests/020-extent-ref-cases/test.sh b/tests/fsck-tests/020-extent-ref-cases/test.sh
index 1e1e4e23..0c4f7848 100755
--- a/tests/fsck-tests/020-extent-ref-cases/test.sh
+++ b/tests/fsck-tests/020-extent-ref-cases/test.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-# In order to confirm that btrfsck supports to check a variety of refs, add the
-# following cases:
+# In order to confirm that 'btrfs check' supports checking a variety of refs,
+# add the following cases:
#
# * keyed_block_ref
# * keyed_data_ref
@@ -19,12 +19,11 @@ source "$TOP/tests/common"
check_prereq btrfs
-for img in *.img *.raw.xz
-do
- image=$(extract_image "$img")
+check_image() {
+ local image
- # Since the return value bug is already fixed, we don't need
- # the old grep hack to detect bug.
+ image=$1
run_check "$TOP/btrfs" check "$image"
- rm -f "$image"
-done
+}
+
+check_all_images
diff --git a/tests/fsck-tests/021-partially-dropped-snapshot-case/test.sh b/tests/fsck-tests/021-partially-dropped-snapshot-case/test.sh
index 44a33a63..5d997e24 100755
--- a/tests/fsck-tests/021-partially-dropped-snapshot-case/test.sh
+++ b/tests/fsck-tests/021-partially-dropped-snapshot-case/test.sh
@@ -1,18 +1,22 @@
#!/bin/bash
-# confirm whether btrfsck supports to check a partially dropped snapshot
+# confirm whether 'btrfs check' supports check ing of a partially dropped
+# snapshot
source "$TOP/tests/common"
check_prereq btrfs
-for img in *.img
-do
- image=$(extract_image "$img")
+check_image()
+{
+ local image
+
+ image=$1
run_check_stdout "$TOP/btrfs" check "$image" 2>&1 |
grep -q "Errors found in extent allocation tree or chunk allocation"
if [ $? -eq 0 ]; then
rm -f "$image"
_fail "unexpected error occurred when checking $img"
fi
- rm -f "$image"
-done
+}
+
+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
index 6cf8440b..76ebcb6b 100755
--- a/tests/fsck-tests/024-clear-space-cache/test.sh
+++ b/tests/fsck-tests/024-clear-space-cache/test.sh
@@ -7,7 +7,7 @@ check_prereq btrfs
check_prereq mkfs.btrfs
setup_root_helper
-prepare_test_dev 1G
+prepare_test_dev
run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev
diff --git a/tests/fsck-tests/027-bad-extent-inline-ref-type/bad-extent-inline-ref-type.raw.xz b/tests/fsck-tests/027-bad-extent-inline-ref-type/bad-extent-inline-ref-type.raw.xz
new file mode 100644
index 00000000..09d82019
--- /dev/null
+++ b/tests/fsck-tests/027-bad-extent-inline-ref-type/bad-extent-inline-ref-type.raw.xz
Binary files differ
diff --git a/tests/fsck-tests/027-tree-reloc-tree/test.sh b/tests/fsck-tests/027-tree-reloc-tree/test.sh
new file mode 100755
index 00000000..afad1e8d
--- /dev/null
+++ b/tests/fsck-tests/027-tree-reloc-tree/test.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+# Make sure btrfs check won't report any false alerts for valid image with
+# reloc tree.
+#
+# Also due to the short life span of reloc tree, save the as dump example for
+# later usage.
+
+source "$TOP/tests/common"
+
+check_prereq btrfs
+
+check_image() {
+ local image
+
+ image=$1
+ run_check "$TOP/btrfs" check "$image"
+}
+
+check_all_images
diff --git a/tests/fsck-tests/027-tree-reloc-tree/tree_reloc_for_data_reloc.img.xz b/tests/fsck-tests/027-tree-reloc-tree/tree_reloc_for_data_reloc.img.xz
new file mode 100644
index 00000000..66d8bde6
--- /dev/null
+++ b/tests/fsck-tests/027-tree-reloc-tree/tree_reloc_for_data_reloc.img.xz
Binary files differ
diff --git a/tests/fsck-tests/027-tree-reloc-tree/tree_reloc_for_fs_tree.img.xz b/tests/fsck-tests/027-tree-reloc-tree/tree_reloc_for_fs_tree.img.xz
new file mode 100644
index 00000000..22af324b
--- /dev/null
+++ b/tests/fsck-tests/027-tree-reloc-tree/tree_reloc_for_fs_tree.img.xz
Binary files differ
diff --git a/tests/fsck-tests/028-unaligned-super-dev-sizes/dev_and_super_mismatch_unaligned.raw.xz b/tests/fsck-tests/028-unaligned-super-dev-sizes/dev_and_super_mismatch_unaligned.raw.xz
new file mode 100644
index 00000000..153e514a
--- /dev/null
+++ b/tests/fsck-tests/028-unaligned-super-dev-sizes/dev_and_super_mismatch_unaligned.raw.xz
Binary files differ
diff --git a/tests/fsck-tests/028-unaligned-super-dev-sizes/test.sh b/tests/fsck-tests/028-unaligned-super-dev-sizes/test.sh
new file mode 100755
index 00000000..6f315fae
--- /dev/null
+++ b/tests/fsck-tests/028-unaligned-super-dev-sizes/test.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+#
+# An image with mis-aligned superblock total_bytes, that will be found and
+# fixed by 'check' or fixed by 'rescue fix-device-size'
+
+source "$TOP/tests/common"
+
+check_prereq btrfs
+prepare_test_dev
+setup_root_helper
+
+check_all_images
+
+image=$(extract_image "./dev_and_super_mismatch_unaligned.raw.xz")
+
+# detect and fix
+run_check "$TOP/btrfs" rescue fix-device-size "$image"
+# no problem found
+run_check "$TOP/btrfs" rescue fix-device-size "$image"
+# check if fix-device-size worked
+run_check "$TOP/btrfs" check "$image"
+# mount test
+run_check_mount_test_dev
+run_check_umount_test_dev
+
+rm -f "$image"
diff --git a/tests/misc-tests/005-convert-progress-thread-crash/test.sh b/tests/misc-tests/005-convert-progress-thread-crash/test.sh
index 054069c2..bc71e1fd 100755
--- a/tests/misc-tests/005-convert-progress-thread-crash/test.sh
+++ b/tests/misc-tests/005-convert-progress-thread-crash/test.sh
@@ -6,7 +6,7 @@ source $TOP/tests/common
check_prereq btrfs-convert
mkfs.ext4 -V &>/dev/null || _not_run "mkfs.ext4 not found"
-prepare_test_dev 1G
+prepare_test_dev
for ((i = 0; i < 20; i++)); do
echo "loop $i" >>$RESULTS
diff --git a/tests/misc-tests/016-send-clone-src/test.sh b/tests/misc-tests/016-send-clone-src/test.sh
index 479da677..2780ebbd 100755
--- a/tests/misc-tests/016-send-clone-src/test.sh
+++ b/tests/misc-tests/016-send-clone-src/test.sh
@@ -10,7 +10,7 @@ check_prereq btrfs
setup_root_helper
-prepare_test_dev 1g
+prepare_test_dev
run_check "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev
diff --git a/tests/misc-tests/017-recv-stream-malformatted/test.sh b/tests/misc-tests/017-recv-stream-malformatted/test.sh
index 3756be27..d199a72e 100755
--- a/tests/misc-tests/017-recv-stream-malformatted/test.sh
+++ b/tests/misc-tests/017-recv-stream-malformatted/test.sh
@@ -9,7 +9,7 @@ check_prereq btrfs
setup_root_helper
-prepare_test_dev 1g
+prepare_test_dev
run_check "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev
diff --git a/tests/misc-tests/018-recv-end-of-stream/test.sh b/tests/misc-tests/018-recv-end-of-stream/test.sh
index 3b8a0319..9ca035f7 100755
--- a/tests/misc-tests/018-recv-end-of-stream/test.sh
+++ b/tests/misc-tests/018-recv-end-of-stream/test.sh
@@ -9,7 +9,7 @@ check_prereq mkfs.btrfs
check_prereq btrfs
setup_root_helper
-prepare_test_dev 1g
+prepare_test_dev
here=`pwd`
diff --git a/tests/misc-tests/019-receive-clones-on-munted-subvol/test.sh b/tests/misc-tests/019-receive-clones-on-mounted-subvol/test.sh
index 182b0cf9..182b0cf9 100755
--- a/tests/misc-tests/019-receive-clones-on-munted-subvol/test.sh
+++ b/tests/misc-tests/019-receive-clones-on-mounted-subvol/test.sh
diff --git a/tests/mkfs-tests/008-secorsize-nodesize-combination/test.sh b/tests/mkfs-tests/008-sectorsize-nodesize-combination/test.sh
index 151e7b77..955cd2b1 100755
--- a/tests/mkfs-tests/008-secorsize-nodesize-combination/test.sh
+++ b/tests/mkfs-tests/008-sectorsize-nodesize-combination/test.sh
@@ -19,7 +19,7 @@ do_test()
{
sectorsize=$1
nodesize=$2
- run_mayfail $TOP/mkfs.btrfs -O $features -n $nodesize -s $sectorsize \
+ run_mayfail $TOP/mkfs.btrfs -f -O $features -n $nodesize -s $sectorsize \
$TEST_DEV
ret=$?
if [ $ret == 0 ]; then