summaryrefslogtreecommitdiff
path: root/tests/mkfs-tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests/mkfs-tests')
-rwxr-xr-xtests/mkfs-tests/001-basic-profiles/test.sh2
-rwxr-xr-xtests/mkfs-tests/002-no-force-mixed-on-small-volume/test.sh2
-rwxr-xr-xtests/mkfs-tests/003-mixed-with-wrong-nodesize/test.sh2
-rwxr-xr-xtests/mkfs-tests/004-rootdir-keeps-size/test.sh4
-rwxr-xr-xtests/mkfs-tests/005-long-device-name-for-ssd/test.sh2
-rwxr-xr-xtests/mkfs-tests/006-partitioned-loopdev/test.sh2
-rwxr-xr-xtests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh2
-rwxr-xr-xtests/mkfs-tests/008-sectorsize-nodesize-combination/test.sh2
-rwxr-xr-xtests/mkfs-tests/009-special-files-for-rootdir/test.sh2
-rwxr-xr-xtests/mkfs-tests/010-minimal-size/test.sh63
-rwxr-xr-xtests/mkfs-tests/011-rootdir-create-file/test.sh15
-rwxr-xr-xtests/mkfs-tests/012-rootdir-no-shrink/test.sh39
-rwxr-xr-xtests/mkfs-tests/013-reserved-1M-for-single/test.sh44
13 files changed, 171 insertions, 10 deletions
diff --git a/tests/mkfs-tests/001-basic-profiles/test.sh b/tests/mkfs-tests/001-basic-profiles/test.sh
index 854ee007..b84016f7 100755
--- a/tests/mkfs-tests/001-basic-profiles/test.sh
+++ b/tests/mkfs-tests/001-basic-profiles/test.sh
@@ -2,7 +2,7 @@
# test various blockgroup profile combinations, use loop devices as block
# devices
-source $TOP/tests/common
+source "$TEST_TOP/common"
check_prereq mkfs.btrfs
check_prereq btrfs
diff --git a/tests/mkfs-tests/002-no-force-mixed-on-small-volume/test.sh b/tests/mkfs-tests/002-no-force-mixed-on-small-volume/test.sh
index 37846234..4bc9c262 100755
--- a/tests/mkfs-tests/002-no-force-mixed-on-small-volume/test.sh
+++ b/tests/mkfs-tests/002-no-force-mixed-on-small-volume/test.sh
@@ -2,7 +2,7 @@
#
# Verify that we do not force mixed block groups on small volumes anymore
-source $TOP/tests/common
+source "$TEST_TOP/common"
check_prereq mkfs.btrfs
diff --git a/tests/mkfs-tests/003-mixed-with-wrong-nodesize/test.sh b/tests/mkfs-tests/003-mixed-with-wrong-nodesize/test.sh
index 074fc22e..f5327338 100755
--- a/tests/mkfs-tests/003-mixed-with-wrong-nodesize/test.sh
+++ b/tests/mkfs-tests/003-mixed-with-wrong-nodesize/test.sh
@@ -2,7 +2,7 @@
#
# Mixed mode needs equal sectorsize and nodesize
-source $TOP/tests/common
+source "$TEST_TOP/common"
check_prereq mkfs.btrfs
diff --git a/tests/mkfs-tests/004-rootdir-keeps-size/test.sh b/tests/mkfs-tests/004-rootdir-keeps-size/test.sh
index 7038c8ea..4a84e6db 100755
--- a/tests/mkfs-tests/004-rootdir-keeps-size/test.sh
+++ b/tests/mkfs-tests/004-rootdir-keeps-size/test.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# make sure that mkfs.btrfs --rootsize does not change size of the image
-source $TOP/tests/common
+source "$TEST_TOP/common"
check_prereq mkfs.btrfs
@@ -16,7 +16,7 @@ test_mkfs_with_size() {
run_check truncate -s$size $TEST_DEV
imgsize=$(run_check_stdout stat --format=%s $TEST_DEV)
run_check $SUDO_HELPER $TOP/mkfs.btrfs -f \
- --rootdir $TOP/Documentation \
+ --rootdir $INTERNAL_BIN/Documentation \
$TEST_DEV
tmp=$(run_check_stdout stat --format=%s $TEST_DEV)
if ! [ "$imgsize" = "$tmp" ]; then
diff --git a/tests/mkfs-tests/005-long-device-name-for-ssd/test.sh b/tests/mkfs-tests/005-long-device-name-for-ssd/test.sh
index 5bdf50e0..55ce676e 100755
--- a/tests/mkfs-tests/005-long-device-name-for-ssd/test.sh
+++ b/tests/mkfs-tests/005-long-device-name-for-ssd/test.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# a long device name must pass the SSD test
-source $TOP/tests/common
+source "$TEST_TOP/common"
check_prereq mkfs.btrfs
diff --git a/tests/mkfs-tests/006-partitioned-loopdev/test.sh b/tests/mkfs-tests/006-partitioned-loopdev/test.sh
index 0c77e5cd..06c254fd 100755
--- a/tests/mkfs-tests/006-partitioned-loopdev/test.sh
+++ b/tests/mkfs-tests/006-partitioned-loopdev/test.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# recognize partitioned loop devices
-source $TOP/tests/common
+source "$TEST_TOP/common"
if ! losetup --help | grep -q 'partscan'; then
_not_run "losetup --partscan not available"
diff --git a/tests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh b/tests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh
index 3980414f..f7e88c9a 100755
--- a/tests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh
+++ b/tests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# iterate over nodesize and sectorsize combinations
-source $TOP/tests/common
+source "$TEST_TOP/common"
check_prereq mkfs.btrfs
check_prereq btrfs
diff --git a/tests/mkfs-tests/008-sectorsize-nodesize-combination/test.sh b/tests/mkfs-tests/008-sectorsize-nodesize-combination/test.sh
index 955cd2b1..9cc2f9e0 100755
--- a/tests/mkfs-tests/008-sectorsize-nodesize-combination/test.sh
+++ b/tests/mkfs-tests/008-sectorsize-nodesize-combination/test.sh
@@ -4,7 +4,7 @@
# only do mkfs and fsck check, no mounting as
# sub/multi-pagesize is not supported yet
-source $TOP/tests/common
+source "$TEST_TOP/common"
check_prereq mkfs.btrfs
check_prereq btrfs
diff --git a/tests/mkfs-tests/009-special-files-for-rootdir/test.sh b/tests/mkfs-tests/009-special-files-for-rootdir/test.sh
index d327a0d9..a94d5209 100755
--- a/tests/mkfs-tests/009-special-files-for-rootdir/test.sh
+++ b/tests/mkfs-tests/009-special-files-for-rootdir/test.sh
@@ -6,7 +6,7 @@
#
# Note: sock type is skipped in this test
-source "$TOP/tests/common"
+source "$TEST_TOP/common"
check_prereq mkfs.btrfs
check_prereq btrfs
diff --git a/tests/mkfs-tests/010-minimal-size/test.sh b/tests/mkfs-tests/010-minimal-size/test.sh
new file mode 100755
index 00000000..62f8e16a
--- /dev/null
+++ b/tests/mkfs-tests/010-minimal-size/test.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+# test if the reported minimal size of mkfs.btrfs is valid
+
+source "$TOP/tests/common"
+
+check_prereq mkfs.btrfs
+check_prereq btrfs
+
+setup_root_helper
+
+do_test()
+{
+ # 1M should be small enough to reliably fail, we use the output to get
+ # the minimal device size for the given option combination
+ prepare_test_dev 1M
+ output=$(run_mustfail_stdout "mkfs.btrfs for small image" \
+ "$TOP/mkfs.btrfs" -f $@ "$TEST_DEV")
+ good_size=$(echo "$output" | grep -oP "(?<=is )\d+")
+
+ prepare_test_dev "$good_size"
+ echo "Minimal device size is $good_size" >> "$RESULTS"
+ run_check $TOP/mkfs.btrfs -f $@ "$TEST_DEV"
+ run_check_mount_test_dev
+ run_check_umount_test_dev
+}
+
+do_test -n 4k -m single -d single
+do_test -n 4k -m single -d dup
+do_test -n 4k -m dup -d single
+do_test -n 4k -m dup -d dup
+
+do_test -n 8k -m single -d single
+do_test -n 8k -m single -d dup
+do_test -n 8k -m dup -d single
+do_test -n 8k -m dup -d dup
+
+do_test -n 16k -m single -d single
+do_test -n 16k -m single -d dup
+do_test -n 16k -m dup -d single
+do_test -n 16k -m dup -d dup
+
+# Temporary: disable the following tests as they fail inside travis but run
+# fine otherwise. This is probably caused by kernel version, 4.4 fails and 4.14
+# is ok.
+#
+# root_helper mount -t btrfs -o loop /home/travis/build/kdave/btrfs-progs/tests/test.img /home/travis/build/kdave/btrfs-progs/tests/mnt
+# mount: No space left on device
+# failed: root_helper mount -t btrfs -o loop /home/travis/build/kdave/btrfs-progs/tests/test.img /home/travis/build/kdave/btrfs-progs/tests/mnt
+# test failed for case 010-minimal-size
+#
+if [ "$TRAVIS" = true ]; then
+ exit 0
+fi
+
+do_test -n 32k -m single -d single
+do_test -n 32k -m single -d dup
+do_test -n 32k -m dup -d single
+do_test -n 32k -m dup -d dup
+
+do_test -n 64k -m single -d single
+do_test -n 64k -m single -d dup
+do_test -n 64k -m dup -d single
+do_test -n 64k -m dup -d dup
diff --git a/tests/mkfs-tests/011-rootdir-create-file/test.sh b/tests/mkfs-tests/011-rootdir-create-file/test.sh
new file mode 100755
index 00000000..c04f711d
--- /dev/null
+++ b/tests/mkfs-tests/011-rootdir-create-file/test.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+# Regression test for mkfs.btrfs --rootdir on non-existent file.
+# Expected behavior: it should create a new file if destination doesn't exist
+# Regression 460e93f25754 ("btrfs-progs: mkfs: check the status of file at mkfs")
+
+source "$TOP/tests/common"
+
+check_prereq mkfs.btrfs
+
+tmp=$(mktemp -d --tmpdir btrfs-progs-mkfs.rootdirXXXXXXX)
+# we can't use TEST_DEV, a file is needed
+img=$(mktemp btrfs-progs-mkfs.rootdirXXXXXXX)
+run_check "$TOP/mkfs.btrfs" -f --rootdir "$TOP/Documentation/" "$img"
+
+rm -rf -- "$img"
diff --git a/tests/mkfs-tests/012-rootdir-no-shrink/test.sh b/tests/mkfs-tests/012-rootdir-no-shrink/test.sh
new file mode 100755
index 00000000..c1cb04f5
--- /dev/null
+++ b/tests/mkfs-tests/012-rootdir-no-shrink/test.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+# Test if mkfs.btrfs --rootdir will skip shrinking correctly
+
+source "$TOP/tests/common"
+
+check_prereq mkfs.btrfs
+
+setup_root_helper
+
+fs_size=$((512 * 1024 * 1024))
+bs=$((1024 * 1024))
+tmp=$(mktemp -d --tmpdir btrfs-progs-mkfs.rootdirXXXXXXX)
+
+prepare_test_dev $fs_size
+
+# No shrink case
+
+run_check "$TOP/mkfs.btrfs" -f --rootdir "$tmp" "$TEST_DEV"
+run_check_mount_test_dev
+
+# We should be able to write at least half of the fs size data since the fs is
+# not shrunk
+run_check $SUDO_HELPER dd if=/dev/zero bs=$bs count=$(($fs_size / $bs / 2)) \
+ of="$TEST_MNT/file"
+
+run_check_umount_test_dev
+
+# Shrink case
+
+run_check "$TOP/mkfs.btrfs" -f --rootdir "$tmp" --shrink "$TEST_DEV"
+run_check_mount_test_dev
+
+run_mustfail "mkfs.btrfs for shrink rootdir" \
+ $SUDO_HELPER dd if=/dev/zero bs=$bs count=$(($fs_size / $bs / 2)) \
+ of="$TEST_MNT/file"
+
+run_check_umount_test_dev
+
+rm -rf -- "$tmp"
diff --git a/tests/mkfs-tests/013-reserved-1M-for-single/test.sh b/tests/mkfs-tests/013-reserved-1M-for-single/test.sh
new file mode 100755
index 00000000..1490df2c
--- /dev/null
+++ b/tests/mkfs-tests/013-reserved-1M-for-single/test.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+# Test if "-m single" or "--mixed" can cause dev extent to use the reserved 1M
+# range
+#
+# Other profiles will cause mkfs.btrfs to allocate new meta/sys chunks
+# using btrfs_alloc_chunk() which won't use the 0~1M range, so other profiles
+# are safe, but we test them nevertheless.
+
+source "$TOP/tests/common"
+
+check_prereq mkfs.btrfs
+check_prereq btrfs
+
+prepare_test_dev
+
+do_one_test ()
+{
+ run_check "$TOP/mkfs.btrfs" -f "$@" "$TEST_DEV"
+
+ # Use dev-extent tree to find first device extent
+ first_dev_extent=$(run_check_stdout "$TOP/btrfs" inspect-internal \
+ dump-tree -t device "$TEST_DEV" | \
+ grep -oP '(?<=DEV_EXTENT )[[:digit:]]*' | head -n1)
+
+ if [ -z $first_dev_extent ]; then
+ _fail "failed to get first device extent"
+ fi
+
+ echo "first dev extent starts at $first_dev_extent" >> "$RESULTS"
+ echo "reserved range is [0, $(( 1024 * 1024)))" >> "$RESULTS"
+ # First device extent should not start below 1M
+ if [ $first_dev_extent -lt $(( 1024 * 1024 )) ]; then
+ _fail "first device extent occupies reserved 0~1M range"
+ fi
+}
+
+do_one_test --mixed
+do_one_test -m single
+
+do_one_test
+do_one_test -m dup
+do_one_test -d dup
+do_one_test -m dup -d dup
+do_one_test --mixed -m dup -d dup