From d00c9550da1801a0eaff5cedf4312e24691b31ea Mon Sep 17 00:00:00 2001 From: Dimitri John Ledkov Date: Tue, 8 May 2018 14:17:29 -0700 Subject: New upstream release. --- tests/mkfs-tests/001-basic-profiles/test.sh | 19 +++++---- tests/mkfs-tests/004-rootdir-keeps-size/test.sh | 12 +++--- .../005-long-device-name-for-ssd/test.sh | 20 +++++----- tests/mkfs-tests/006-partitioned-loopdev/test.sh | 10 ++--- .../mkfs-tests/007-mix-nodesize-sectorsize/test.sh | 16 ++++---- .../008-sectorsize-nodesize-combination/test.sh | 10 ++--- tests/mkfs-tests/010-minimal-size/test.sh | 6 +-- tests/mkfs-tests/011-rootdir-create-file/test.sh | 2 +- tests/mkfs-tests/012-rootdir-no-shrink/test.sh | 8 ++-- .../mkfs-tests/013-reserved-1M-for-single/test.sh | 6 +-- tests/mkfs-tests/014-rootdir-inline-extent/test.sh | 46 ++++++++++++++++++++++ tests/mkfs-tests/015-fstree-uuid-otime/test.sh | 35 ++++++++++++++++ .../016-rootdir-bad-symbolic-link/test.sh | 26 ++++++++++++ 13 files changed, 161 insertions(+), 55 deletions(-) create mode 100755 tests/mkfs-tests/014-rootdir-inline-extent/test.sh create mode 100755 tests/mkfs-tests/015-fstree-uuid-otime/test.sh create mode 100755 tests/mkfs-tests/016-rootdir-bad-symbolic-link/test.sh (limited to 'tests/mkfs-tests') diff --git a/tests/mkfs-tests/001-basic-profiles/test.sh b/tests/mkfs-tests/001-basic-profiles/test.sh index b84016f7..6e295274 100755 --- a/tests/mkfs-tests/001-basic-profiles/test.sh +++ b/tests/mkfs-tests/001-basic-profiles/test.sh @@ -11,28 +11,27 @@ setup_root_helper test_get_info() { - run_check $SUDO_HELPER $TOP/btrfs inspect-internal dump-super $dev1 - run_check $SUDO_HELPER $TOP/btrfs check $dev1 - run_check $SUDO_HELPER mount $dev1 $TEST_MNT - run_check $TOP/btrfs filesystem df $TEST_MNT - run_check $SUDO_HELPER $TOP/btrfs filesystem usage $TEST_MNT - run_check $SUDO_HELPER $TOP/btrfs device usage $TEST_MNT + run_check $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-super "$dev1" + run_check $SUDO_HELPER "$TOP/btrfs" check "$dev1" + run_check $SUDO_HELPER mount "$dev1" "$TEST_MNT" + run_check "$TOP/btrfs" filesystem df "$TEST_MNT" + run_check $SUDO_HELPER "$TOP/btrfs" filesystem usage "$TEST_MNT" + run_check $SUDO_HELPER "$TOP/btrfs" device usage "$TEST_MNT" run_check $SUDO_HELPER umount "$TEST_MNT" } test_do_mkfs() { - run_check $SUDO_HELPER $TOP/mkfs.btrfs -f \ - $@ + run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$@" } test_mkfs_single() { - test_do_mkfs $@ $dev1 + test_do_mkfs "$@" "$dev1" test_get_info } test_mkfs_multi() { - test_do_mkfs $@ ${loopdevs[@]} + test_do_mkfs "$@" ${loopdevs[@]} test_get_info } diff --git a/tests/mkfs-tests/004-rootdir-keeps-size/test.sh b/tests/mkfs-tests/004-rootdir-keeps-size/test.sh index 4a84e6db..635a5137 100755 --- a/tests/mkfs-tests/004-rootdir-keeps-size/test.sh +++ b/tests/mkfs-tests/004-rootdir-keeps-size/test.sh @@ -13,12 +13,12 @@ test_mkfs_with_size() { local tmp size="$1" - 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 $INTERNAL_BIN/Documentation \ - $TEST_DEV - tmp=$(run_check_stdout stat --format=%s $TEST_DEV) + 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 "$INTERNAL_BIN/Documentation" \ + "$TEST_DEV" + tmp=$(run_check_stdout stat --format=%s "$TEST_DEV") if ! [ "$imgsize" = "$tmp" ]; then _fail "image size changed from $imgsize to $tmp" fi 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 55ce676e..b7c76b18 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 @@ -11,31 +11,31 @@ prepare_test_dev # prep device dmname=\ btrfs-test-with-very-long-name-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -dmdev=/dev/mapper/$dmname +dmdev="/dev/mapper/$dmname" run_check truncate -s0 img chmod a+w img run_check truncate -s2g img loopdev=`run_check_stdout $SUDO_HELPER losetup --find --show img` -run_check $SUDO_HELPER dmsetup create $dmname --table "0 1048576 linear $loopdev 0" +run_check $SUDO_HELPER dmsetup create "$dmname" --table "0 1048576 linear $loopdev 0" -dmbase=`readlink -f $dmdev` +dmbase=`readlink -f "$dmdev"` base=`basename "$dmbase"` -rot=/sys/class/block/$base/queue/rotational +rot="/sys/class/block/$base/queue/rotational" # switch rotational run_check cat $rot -echo 0 | run_check $SUDO_HELPER tee $rot -run_check cat $rot +echo 0 | run_check $SUDO_HELPER tee "$rot" +run_check cat "$rot" # test -run_check_stdout $SUDO_HELPER $TOP/mkfs.btrfs -f $@ $dmdev | +run_check_stdout $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$@" "$dmdev" | grep -q 'SSD detected:.*yes' || _fail 'SSD not detected' -run_check $SUDO_HELPER $TOP/btrfs inspect-internal dump-super $dmdev +run_check $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-super "$dmdev" # cleanup -run_check $SUDO_HELPER dmsetup remove $dmname -run_mayfail $SUDO_HELPER losetup -d $loopdev +run_check $SUDO_HELPER dmsetup remove "$dmname" +run_mayfail $SUDO_HELPER losetup -d "$loopdev" run_check truncate -s0 img rm img diff --git a/tests/mkfs-tests/006-partitioned-loopdev/test.sh b/tests/mkfs-tests/006-partitioned-loopdev/test.sh index 06c254fd..5d972a78 100755 --- a/tests/mkfs-tests/006-partitioned-loopdev/test.sh +++ b/tests/mkfs-tests/006-partitioned-loopdev/test.sh @@ -18,15 +18,15 @@ cp partition-1g-1g img run_check truncate -s2g img loopdev=$(run_check_stdout $SUDO_HELPER losetup --partscan --find --show img) -base=$(basename $loopdev) +base=$(basename "$loopdev") # expect partitions named like loop0p1 etc -for looppart in $(ls /dev/$base?*); do - run_check $SUDO_HELPER $TOP/mkfs.btrfs -f $looppart - run_check $SUDO_HELPER $TOP/btrfs inspect-internal dump-super $looppart +for looppart in $(ls /dev/"$base"?*); do + run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$looppart" + run_check $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-super "$looppart" done # cleanup -run_check $SUDO_HELPER losetup -d $loopdev +run_check $SUDO_HELPER losetup -d "$loopdev" run_check truncate -s0 img rm img diff --git a/tests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh b/tests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh index f7e88c9a..31f44f33 100755 --- a/tests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh +++ b/tests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh @@ -11,9 +11,9 @@ prepare_test_dev test_mkfs_single() { - run_check $SUDO_HELPER $TOP/mkfs.btrfs -f "$@" $TEST_DEV - run_check $SUDO_HELPER $TOP/btrfs inspect-internal dump-super $TEST_DEV - run_check $SUDO_HELPER $TOP/btrfs check $TEST_DEV + run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$@" "$TEST_DEV" + run_check $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-super "$TEST_DEV" + run_check $SUDO_HELPER "$TOP/btrfs" check "$TEST_DEV" } # default @@ -22,14 +22,14 @@ test_mkfs_single # nodesize >= sectorsize for nodesize in 4096 8192 16384 32768 65536; do for sectorsize in 4096 8192 16384 32768 65536; do - [ $nodesize -lt $sectorsize ] && continue - test_mkfs_single -n $nodesize -s $sectorsize -d single -m single - test_mkfs_single -n $nodesize -s $sectorsize -d single -m dup + [ "$nodesize" -lt "$sectorsize" ] && continue + test_mkfs_single -n "$nodesize" -s "$sectorsize" -d single -m single + test_mkfs_single -n "$nodesize" -s "$sectorsize" -d single -m dup done done # nodesize, mixed mode for nodesize in 4k 8k 16k 32k 64k; do - test_mkfs_single -n $nodesize -s $nodesize -d single -m single --mixed - test_mkfs_single -n $nodesize -s $nodesize -d dup -m dup --mixed + test_mkfs_single -n "$nodesize" -s "$nodesize" -d single -m single --mixed + test_mkfs_single -n "$nodesize" -s "$nodesize" -d dup -m dup --mixed done diff --git a/tests/mkfs-tests/008-sectorsize-nodesize-combination/test.sh b/tests/mkfs-tests/008-sectorsize-nodesize-combination/test.sh index 9cc2f9e0..345d81de 100755 --- a/tests/mkfs-tests/008-sectorsize-nodesize-combination/test.sh +++ b/tests/mkfs-tests/008-sectorsize-nodesize-combination/test.sh @@ -19,13 +19,13 @@ do_test() { sectorsize=$1 nodesize=$2 - run_mayfail $TOP/mkfs.btrfs -f -O $features -n $nodesize -s $sectorsize \ - $TEST_DEV + run_mayfail "$TOP/mkfs.btrfs" -f -O "$features" -n "$nodesize" -s "$sectorsize" \ + "$TEST_DEV" ret=$? - if [ $ret == 0 ]; then - run_check $TOP/btrfs check $TEST_DEV + if [ "$ret" == 0 ]; then + run_check "$TOP/btrfs" check "$TEST_DEV" fi - return $ret + return "$ret" } # Invalid: Unaligned sectorsize and nodesize diff --git a/tests/mkfs-tests/010-minimal-size/test.sh b/tests/mkfs-tests/010-minimal-size/test.sh index 62f8e16a..0ebe0995 100755 --- a/tests/mkfs-tests/010-minimal-size/test.sh +++ b/tests/mkfs-tests/010-minimal-size/test.sh @@ -1,7 +1,7 @@ #!/bin/bash # test if the reported minimal size of mkfs.btrfs is valid -source "$TOP/tests/common" +source "$TEST_TOP/common" check_prereq mkfs.btrfs check_prereq btrfs @@ -14,12 +14,12 @@ do_test() # 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") + "$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 $TOP/mkfs.btrfs -f "$@" "$TEST_DEV" run_check_mount_test_dev run_check_umount_test_dev } diff --git a/tests/mkfs-tests/011-rootdir-create-file/test.sh b/tests/mkfs-tests/011-rootdir-create-file/test.sh index c04f711d..20f7c4ce 100755 --- a/tests/mkfs-tests/011-rootdir-create-file/test.sh +++ b/tests/mkfs-tests/011-rootdir-create-file/test.sh @@ -3,7 +3,7 @@ # 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" +source "$TEST_TOP/common" check_prereq mkfs.btrfs diff --git a/tests/mkfs-tests/012-rootdir-no-shrink/test.sh b/tests/mkfs-tests/012-rootdir-no-shrink/test.sh index c1cb04f5..765f8cdd 100755 --- a/tests/mkfs-tests/012-rootdir-no-shrink/test.sh +++ b/tests/mkfs-tests/012-rootdir-no-shrink/test.sh @@ -1,7 +1,7 @@ #!/bin/bash # Test if mkfs.btrfs --rootdir will skip shrinking correctly -source "$TOP/tests/common" +source "$TEST_TOP/common" check_prereq mkfs.btrfs @@ -11,7 +11,7 @@ fs_size=$((512 * 1024 * 1024)) bs=$((1024 * 1024)) tmp=$(mktemp -d --tmpdir btrfs-progs-mkfs.rootdirXXXXXXX) -prepare_test_dev $fs_size +prepare_test_dev "$fs_size" # No shrink case @@ -20,7 +20,7 @@ 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)) \ +run_check $SUDO_HELPER dd if=/dev/zero bs="$bs" count=$(($fs_size / $bs / 2)) \ of="$TEST_MNT/file" run_check_umount_test_dev @@ -31,7 +31,7 @@ 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)) \ + $SUDO_HELPER dd if=/dev/zero bs="$bs" count=$(($fs_size / $bs / 2)) \ of="$TEST_MNT/file" run_check_umount_test_dev diff --git a/tests/mkfs-tests/013-reserved-1M-for-single/test.sh b/tests/mkfs-tests/013-reserved-1M-for-single/test.sh index 1490df2c..1944ad93 100755 --- a/tests/mkfs-tests/013-reserved-1M-for-single/test.sh +++ b/tests/mkfs-tests/013-reserved-1M-for-single/test.sh @@ -6,7 +6,7 @@ # 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" +source "$TEST_TOP/common" check_prereq mkfs.btrfs check_prereq btrfs @@ -22,14 +22,14 @@ do_one_test () dump-tree -t device "$TEST_DEV" | \ grep -oP '(?<=DEV_EXTENT )[[:digit:]]*' | head -n1) - if [ -z $first_dev_extent ]; then + 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 + if [ "$first_dev_extent" -lt $(( 1024 * 1024 )) ]; then _fail "first device extent occupies reserved 0~1M range" fi } diff --git a/tests/mkfs-tests/014-rootdir-inline-extent/test.sh b/tests/mkfs-tests/014-rootdir-inline-extent/test.sh new file mode 100755 index 00000000..09a96004 --- /dev/null +++ b/tests/mkfs-tests/014-rootdir-inline-extent/test.sh @@ -0,0 +1,46 @@ +#!/bin/bash +# Regression test for mkfs.btrfs --rootdir with inline file extents +# For any large inline file extent, btrfs check could already report it + +source "$TEST_TOP/common" + +check_prereq mkfs.btrfs + +prepare_test_dev + +tmp=$(mktemp -d --tmpdir btrfs-progs-mkfs.rootdirXXXXXXX) + +pagesize=$(getconf PAGESIZE) +create_file() +{ + local size=$1 + # Reuse size as filename + eval printf "%0.sx" {1..$size} > "$tmp/$size" +} + +test_mkfs_rootdir() +{ + nodesize=$1 + run_check "$TOP/mkfs.btrfs" --nodesize "$nodesize" -f --rootdir "$tmp" \ + "$TEST_DEV" + run_check $SUDO_HELPER "$TOP/btrfs" check "$TEST_DEV" +} + +# Use power of 2 from 512 to 64K (maximum node size) as base file size +for i in 512 1024 2048 4096 8192 16384 32768; do + create_file $(($i - 102)) + # 101 is the overhead size for max inline extent + create_file $(($i - 101)) + create_file $(($i - 100)) + + create_file $(($i - 1)) + create_file $i + create_file $(($i + 1)) +done + +for nodesize in 4096 8192 16384 32768 65536; do + if [ "$nodesize" -ge "$pagesize" ]; then + test_mkfs_rootdir "$nodesize" + fi +done +rm -rf -- "$tmp" diff --git a/tests/mkfs-tests/015-fstree-uuid-otime/test.sh b/tests/mkfs-tests/015-fstree-uuid-otime/test.sh new file mode 100755 index 00000000..a2e04a3f --- /dev/null +++ b/tests/mkfs-tests/015-fstree-uuid-otime/test.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# verify that mkfs fills the uuid and otime for FS_TREE + +source "$TEST_TOP/common" + +check_prereq mkfs.btrfs +check_prereq btrfs + +setup_root_helper +prepare_test_dev + +# item 3 key (FS_TREE ROOT_ITEM 0) itemoff 14949 itemsize 439 +# generation 4 root_dirid 256 bytenr 30408704 level 0 refs 1 +# lastsnap 0 byte_limit 0 bytes_used 16384 flags 0x0(none) +# uuid 322826f3-817a-4111-89ff-5481bfd516e2 +# ctime 1521656113.0 (2018-03-21 19:15:13) +# otime 1521656113.0 (2018-03-21 19:15:13) +# drop key (0 UNKNOWN.0 0) level 0 + +run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$@" "$TEST_DEV" +# match not-all-zeros in the first part +uuid=$(run_check_stdout $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-tree -t root "$TEST_DEV" | \ + grep -A 3 "FS_TREE ROOT_ITEM 0" | grep 'uuid ') + +if [ $? != 0 ]; then + _fail "uuid for FS_TREE not found" +fi + +if [ "$uuid" = '00000000-0000-0000-0000-000000000000' ]; then + _fail "uuid for FS_TREE is null" +fi + +run_check_stdout $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-tree -t root "$TEST_DEV" | \ + grep -A 5 "FS_TREE ROOT_ITEM 0" | grep -q 'otime ' || \ + _fail "otime for FS_TREE not found" diff --git a/tests/mkfs-tests/016-rootdir-bad-symbolic-link/test.sh b/tests/mkfs-tests/016-rootdir-bad-symbolic-link/test.sh new file mode 100755 index 00000000..39387ec7 --- /dev/null +++ b/tests/mkfs-tests/016-rootdir-bad-symbolic-link/test.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# Regression test for mkfs.btrfs --rootdir with dangling symlink (points to +# non-existing location) +# +# Since mkfs.btrfs --rootdir will just create symbolic link rather than +# follow it, we shouldn't hit any problem + +source "$TEST_TOP/common" + +check_prereq mkfs.btrfs +prepare_test_dev + +tmp=$(mktemp -d --tmpdir btrfs-progs-mkfs.rootdirXXXXXXX) + +non_existing="/no/such/file$RANDOM$RANDOM" + +if [ -f "$non_existing" ]; then + _not_run "Some one created $non_existing, which is not expect to exist" +fi + +run_check ln -sf "$non_existing" "$tmp/foobar" + +run_check "$TOP/mkfs.btrfs" -f --rootdir "$tmp" "$TEST_DEV" +run_check "$TOP/btrfs" check "$TEST_DEV" + +rm -rf -- "$tmp" -- cgit v1.2.3