From 74d288e05c2d0cb97186f51049813b3e5b5bb0cd Mon Sep 17 00:00:00 2001 From: Dimitri John Ledkov Date: Wed, 18 Oct 2017 13:15:59 +0100 Subject: New upstream release. --- tests/convert-tests/001-ext2-basic/test.sh | 1 + tests/convert-tests/002-ext3-basic/test.sh | 1 + tests/convert-tests/003-ext4-basic/test.sh | 1 + .../convert-tests/005-delete-all-rollback/test.sh | 3 +- tests/convert-tests/006-large-hole-extent/test.sh | 1 + .../007-unsupported-block-sizes/test.sh | 1 + tests/convert-tests/008-readonly-image/test.sh | 7 +- tests/convert-tests/009-common-inode-flags/test.sh | 5 +- tests/convert-tests/010-reiserfs-basic/test.sh | 21 ++++++ .../011-reiserfs-delete-all-rollback/test.sh | 72 ++++++++++++++++++++ .../012-reiserfs-large-hole-extent/test.sh | 28 ++++++++ .../013-reiserfs-common-inode-flags/test.sh | 42 ++++++++++++ .../014-reiserfs-tail-handling/test.sh | 79 ++++++++++++++++++++++ 13 files changed, 257 insertions(+), 5 deletions(-) create mode 100755 tests/convert-tests/010-reiserfs-basic/test.sh create mode 100755 tests/convert-tests/011-reiserfs-delete-all-rollback/test.sh create mode 100755 tests/convert-tests/012-reiserfs-large-hole-extent/test.sh create mode 100755 tests/convert-tests/013-reiserfs-common-inode-flags/test.sh create mode 100755 tests/convert-tests/014-reiserfs-tail-handling/test.sh (limited to 'tests/convert-tests') diff --git a/tests/convert-tests/001-ext2-basic/test.sh b/tests/convert-tests/001-ext2-basic/test.sh index 7d8e87d8..d94bf0b6 100755 --- a/tests/convert-tests/001-ext2-basic/test.sh +++ b/tests/convert-tests/001-ext2-basic/test.sh @@ -6,6 +6,7 @@ source "$TOP/tests/common.convert" setup_root_helper prepare_test_dev 512M check_prereq btrfs-convert +check_global_prereq mke2fs for feature in '' 'extref' 'skinny-metadata' 'no-holes'; do convert_test ext2 "$feature" "ext2 4k nodesize" 4096 mke2fs -b 4096 diff --git a/tests/convert-tests/002-ext3-basic/test.sh b/tests/convert-tests/002-ext3-basic/test.sh index 5a33c2ca..f00e0e82 100755 --- a/tests/convert-tests/002-ext3-basic/test.sh +++ b/tests/convert-tests/002-ext3-basic/test.sh @@ -6,6 +6,7 @@ source "$TOP/tests/common.convert" setup_root_helper prepare_test_dev 512M check_prereq btrfs-convert +check_global_prereq mke2fs for feature in '' 'extref' 'skinny-metadata' 'no-holes'; do convert_test ext3 "$feature" "ext3 4k nodesize" 4096 mke2fs -j -b 4096 diff --git a/tests/convert-tests/003-ext4-basic/test.sh b/tests/convert-tests/003-ext4-basic/test.sh index df8bec28..d33f1d9a 100755 --- a/tests/convert-tests/003-ext4-basic/test.sh +++ b/tests/convert-tests/003-ext4-basic/test.sh @@ -6,6 +6,7 @@ source "$TOP/tests/common.convert" setup_root_helper prepare_test_dev 512M check_prereq btrfs-convert +check_global_prereq mke2fs for feature in '' 'extref' 'skinny-metadata' 'no-holes'; do convert_test ext4 "$feature" "ext4 4k nodesize" 4096 mke2fs -t ext4 -b 4096 diff --git a/tests/convert-tests/005-delete-all-rollback/test.sh b/tests/convert-tests/005-delete-all-rollback/test.sh index 337413bb..19aa76d4 100755 --- a/tests/convert-tests/005-delete-all-rollback/test.sh +++ b/tests/convert-tests/005-delete-all-rollback/test.sh @@ -8,6 +8,7 @@ source "$TOP/tests/common.convert" setup_root_helper prepare_test_dev 512M check_prereq btrfs-convert +check_global_prereq mke2fs # simple wrapper for a convert test # $1: btrfs features, argument to -O @@ -45,7 +46,7 @@ do_test() { cd "$here" run_check "$TOP/btrfs" filesystem sync "$TEST_MNT" run_check_umount_test_dev - convert_test_post_rollback + convert_test_post_rollback ext4 run_check_mount_convert_dev ext4 convert_test_post_check_checksums "$CHECKSUMTMP" diff --git a/tests/convert-tests/006-large-hole-extent/test.sh b/tests/convert-tests/006-large-hole-extent/test.sh index f63a1186..0edb6280 100755 --- a/tests/convert-tests/006-large-hole-extent/test.sh +++ b/tests/convert-tests/006-large-hole-extent/test.sh @@ -11,6 +11,7 @@ source "$TOP/tests/common.convert" setup_root_helper prepare_test_dev 512M check_prereq btrfs-convert +check_global_prereq mke2fs default_mke2fs="mke2fs -t ext4 -b 4096" convert_test_preamble '' 'large hole extent test' 16k "$default_mke2fs" diff --git a/tests/convert-tests/007-unsupported-block-sizes/test.sh b/tests/convert-tests/007-unsupported-block-sizes/test.sh index af8ec357..f1b29726 100755 --- a/tests/convert-tests/007-unsupported-block-sizes/test.sh +++ b/tests/convert-tests/007-unsupported-block-sizes/test.sh @@ -7,6 +7,7 @@ source "$TOP/tests/common.convert" setup_root_helper prepare_test_dev 512M check_prereq btrfs-convert +check_global_prereq mke2fs for bs in 1024 2048; do default_mke2fs="mke2fs -t ext4 -b $bs" diff --git a/tests/convert-tests/008-readonly-image/test.sh b/tests/convert-tests/008-readonly-image/test.sh index 4d5e629f..8551fb9b 100755 --- a/tests/convert-tests/008-readonly-image/test.sh +++ b/tests/convert-tests/008-readonly-image/test.sh @@ -7,6 +7,7 @@ source "$TOP/tests/common.convert" setup_root_helper prepare_test_dev 512M check_prereq btrfs-convert +check_global_prereq mke2fs default_mke2fs="mke2fs -t ext4 -b 4096" convert_test_preamble '' 'readonly image test' 16k "$default_mke2fs" @@ -16,11 +17,11 @@ convert_test_do_convert run_check_mount_test_dev # It's expected to fail -$SUDO_HELPER dd if=/dev/zero of="$TEST_MNT/ext2_save/image" bs=1M count=1 \ +$SUDO_HELPER dd if=/dev/zero of="$TEST_MNT/ext2_saved/image" bs=1M count=1 \ &> /dev/null if [ $? -ne 1 ]; then - echo "after convert ext2_save/image is not read-only" + echo "after convert ext2_saved/image is not read-only" exit 1 fi run_check_umount_test_dev -convert_test_post_rollback +convert_test_post_rollback ext4 diff --git a/tests/convert-tests/009-common-inode-flags/test.sh b/tests/convert-tests/009-common-inode-flags/test.sh index f42fb681..cd7b5111 100755 --- a/tests/convert-tests/009-common-inode-flags/test.sh +++ b/tests/convert-tests/009-common-inode-flags/test.sh @@ -7,6 +7,9 @@ source "$TOP/tests/common.convert" setup_root_helper prepare_test_dev 512M check_prereq btrfs-convert +check_global_prereq mke2fs +check_global_prereq lsattr +check_global_prereq chattr fail=0 default_mke2fs="mke2fs -t ext4 -b 4096" @@ -31,4 +34,4 @@ if [ $? -ne 0 ]; then fi run_check_umount_test_dev -convert_test_post_rollback +convert_test_post_rollback ext4 diff --git a/tests/convert-tests/010-reiserfs-basic/test.sh b/tests/convert-tests/010-reiserfs-basic/test.sh new file mode 100755 index 00000000..261f8704 --- /dev/null +++ b/tests/convert-tests/010-reiserfs-basic/test.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +source "$TOP/tests/common" +source "$TOP/tests/common.convert" + +if ! check_kernel_support_reiserfs >/dev/null; then + _not_run "no reiserfs support" +fi + +setup_root_helper +prepare_test_dev 512M +check_prereq btrfs-convert +check_global_prereq mkreiserfs + +for feature in '' 'extref' 'skinny-metadata' 'no-holes'; do + convert_test reiserfs "$feature" "reiserfs 4k nodesize" 4096 mkreiserfs -b 4096 + convert_test reiserfs "$feature" "reiserfs 8k nodesize" 8192 mkreiserfs -b 4096 + convert_test reiserfs "$feature" "reiserfs 16k nodesize" 16384 mkreiserfs -b 4096 + convert_test reiserfs "$feature" "reiserfs 32k nodesize" 32768 mkreiserfs -b 4096 + convert_test reiserfs "$feature" "reiserfs 64k nodesize" 65536 mkreiserfs -b 4096 +done diff --git a/tests/convert-tests/011-reiserfs-delete-all-rollback/test.sh b/tests/convert-tests/011-reiserfs-delete-all-rollback/test.sh new file mode 100755 index 00000000..c6c3119e --- /dev/null +++ b/tests/convert-tests/011-reiserfs-delete-all-rollback/test.sh @@ -0,0 +1,72 @@ +#!/bin/bash +# create a base image, convert to btrfs, remove all files, rollback the reiserfs image + +source "$TOP/tests/common" +source "$TOP/tests/common.convert" + +if ! check_kernel_support_reiserfs >/dev/null; then + _not_run "no reiserfs support" +fi + +setup_root_helper +prepare_test_dev 512M +check_prereq btrfs-convert +check_global_prereq mkreiserfs + +# simple wrapper for a convert test +# $1: btrfs features, argument to -O +# $2: message +# $3: nodesize value +# $4 + rest: command to create the reiserfs image +do_test() { + local features + local msg + local nodesize + local CHECKSUMTMP + local here + + features="$1" + msg="$2" + nodesize="$3" + shift 3 + convert_test_preamble "$features" "$msg" "$nodesize" "$@" + convert_test_prep_fs reiserfs "$@" + populate_fs + CHECKSUMTMP=$(mktemp --tmpdir btrfs-progs-convert.XXXXXXXXXX) + convert_test_gen_checksums "$CHECKSUMTMP" + + run_check_umount_test_dev + + convert_test_do_convert "$features" "$nodesize" + + run_check_mount_test_dev + convert_test_post_check_checksums "$CHECKSUMTMP" + + here=$(pwd) + cd "$TEST_MNT" || _fail "cannot cd to TEST_MNT" + # reiserfs_saved/image must not be deleted + run_mayfail $SUDO_HELPER find "$TEST_MNT"/ -mindepth 1 -path '*reiserfs_saved' -prune -o -exec rm -vrf "{}" \; + cd "$here" + run_check "$TOP/btrfs" filesystem sync "$TEST_MNT" + run_check_umount_test_dev + convert_test_post_rollback reiserfs + + run_check_mount_convert_dev reiserfs + convert_test_post_check_checksums "$CHECKSUMTMP" + run_check_umount_test_dev + + # mount again and verify checksums + run_check_mount_convert_dev reiserfs + convert_test_post_check_checksums "$CHECKSUMTMP" + run_check_umount_test_dev + + rm "$CHECKSUMTMP" +} + +for feature in '' 'extref' 'skinny-metadata' 'no-holes'; do + do_test "$feature" "reiserfs 4k nodesize" 4096 mkreiserfs -b 4096 + do_test "$feature" "reiserfs 8k nodesize" 8192 mkreiserfs -b 4096 + do_test "$feature" "reiserfs 16k nodesize" 16384 mkreiserfs -b 4096 + do_test "$feature" "reiserfs 32k nodesize" 32768 mkreiserfs -b 4096 + do_test "$feature" "reiserfs 64k nodesize" 65536 mkreiserfs -b 4096 +done diff --git a/tests/convert-tests/012-reiserfs-large-hole-extent/test.sh b/tests/convert-tests/012-reiserfs-large-hole-extent/test.sh new file mode 100755 index 00000000..7a8d4972 --- /dev/null +++ b/tests/convert-tests/012-reiserfs-large-hole-extent/test.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# Create a base image with large hole extent, then convert to btrfs, +# check the converted image. +# Check if btrfs-convert can handle such large hole. +# Fast pinpoint regression test. No options combination nor checksum +# verification + +source "$TOP/tests/common" +source "$TOP/tests/common.convert" + +if ! check_kernel_support_reiserfs >/dev/null; then + _not_run "no reiserfs support" +fi + +setup_root_helper +prepare_test_dev 512M +check_prereq btrfs-convert +check_global_prereq mkreiserfs + +default_mkfs="mkreiserfs -b 4096" +convert_test_preamble '' 'large hole extent test' 16k "$default_mkfs" +convert_test_prep_fs reiserfs $default_mkfs + +run_check $SUDO_HELPER dd if=/dev/zero of="$TEST_MNT/file" bs=1M \ + count=1 seek=1024 > /dev/null 2>&1 + +run_check_umount_test_dev +convert_test_do_convert diff --git a/tests/convert-tests/013-reiserfs-common-inode-flags/test.sh b/tests/convert-tests/013-reiserfs-common-inode-flags/test.sh new file mode 100755 index 00000000..e242a3b0 --- /dev/null +++ b/tests/convert-tests/013-reiserfs-common-inode-flags/test.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# Check if btrfs-convert can copy common inode flags like SYNC/IMMUTABLE + +source "$TOP/tests/common" +source "$TOP/tests/common.convert" + +if ! check_kernel_support_reiserfs >/dev/null; then + _not_run "no reiserfs support" +fi + +setup_root_helper +prepare_test_dev 512M +check_prereq btrfs-convert +check_global_prereq mkreiserfs +check_global_prereq chattr +check_global_prereq lsattr + +fail=0 +default_mkfs="mkreiserfs -b 4096" +convert_test_preamble '' 'common inode flags test' 16k "$default_mkfs" +convert_test_prep_fs reiserfs $default_mkfs + +# create file with specific flags +run_check $SUDO_HELPER touch "$TEST_MNT/flag_test" +run_check $SUDO_HELPER chattr +aAdSi "$TEST_MNT/flag_test" +run_check lsattr "$TEST_MNT/flag_test" + +run_check_umount_test_dev +convert_test_do_convert +run_check_mount_test_dev + +# Log the status +run_check lsattr "$TEST_MNT/flag_test" +# Above flags should be copied to btrfs flags, and lsattr should get them +run_check_stdout lsattr "$TEST_MNT/flag_test" | cut -f1 -d\ | grep "[aAdiS]" -q +if [ $? -ne 0 ]; then + rm tmp_output + _fail "no common inode flags are copied after convert" +fi + +run_check_umount_test_dev +convert_test_post_rollback reiserfs diff --git a/tests/convert-tests/014-reiserfs-tail-handling/test.sh b/tests/convert-tests/014-reiserfs-tail-handling/test.sh new file mode 100755 index 00000000..f6131d96 --- /dev/null +++ b/tests/convert-tests/014-reiserfs-tail-handling/test.sh @@ -0,0 +1,79 @@ +#!/bin/bash +# Check the various combinations of real blocks, holes, and tails +# Since it's possible to have a valid extent layout that check will +# happily accept AND have garbage in the output, compare the results +# as well. +# We use separate inputs for tails and real blocks so we can determine +# if there was a failure in copying either. + +source "$TOP/tests/common" +source "$TOP/tests/common.convert" + +if ! check_kernel_support_reiserfs >/dev/null; then + _not_run "no reiserfs support" +fi + +setup_root_helper +prepare_test_dev 512M +check_prereq btrfs-convert +check_global_prereq md5sum +check_global_prereq mkreiserfs +check_global_prereq perl + +perl -e "print 'a'x8192;" > input +perl -e "print 'b'x8192;" > input2 + +default_mkfs="mkreiserfs -b 4096" +convert_test_preamble '' 'tail conversion test' 16k "$default_mkfs" +convert_test_prep_fs reiserfs $default_mkfs + +# Hole alone +run_check $SUDO_HELPER truncate -s 81920 "$TEST_MNT/hole" + +# Tail alone +run_check $SUDO_HELPER dd if=input of="$TEST_MNT/1k" bs=1k count=1 \ + > /dev/null 2>&1 + +# Single indirect block +run_check $SUDO_HELPER dd if=input of="$TEST_MNT/4k" bs=1k count=4 \ + > /dev/null 2>&1 + +# Indirect block + tail +run_check $SUDO_HELPER dd if=input of="$TEST_MNT/5k" bs=1k count=4 \ + > /dev/null 2>&1 +run_check $SUDO_HELPER dd if=input2 of="$TEST_MNT/5k" bs=1k count=1 \ + seek=4 > /dev/null 2>&1 + +# Hole followed by tail +run_check $SUDO_HELPER dd if=input of="$TEST_MNT/hole-1k" bs=1k count=1 \ + seek=4 > /dev/null 2>&1 + +# Indirect block followed by hole +run_check $SUDO_HELPER dd if=input of="$TEST_MNT/4k-hole" bs=1k count=4 \ + > /dev/null 2>&1 +run_check $SUDO_HELPER truncate -s 81920 "$TEST_MNT/4k-hole" + +# Indirect block followed by hole followed by tail +run_check $SUDO_HELPER dd if=input of="$TEST_MNT/4k-hole-1k" bs=1k count=4 \ + > /dev/null 2>&1 +run_check $SUDO_HELPER truncate -s 8192 "$TEST_MNT/4k-hole-1k" +run_check $SUDO_HELPER dd if=input2 of="$TEST_MNT/4k-hole-1k" bs=1k count=1 \ + seek=8 > /dev/null 2>&1 + +rm -f input input2 + +declare -A SUMS +for file in "$TEST_MNT"/*; do + SUM=$(md5sum "$file") + SUMS["$file"]=$SUM +done + +run_check_umount_test_dev +convert_test_do_convert + +run_check_mount_test_dev +for file in "${!SUMS[@]}"; do + SUM=$(md5sum "$file") + run_check test "$SUM" = "${SUMS[$file]}" +done +run_check_umount_test_dev -- cgit v1.2.3