From dc4bbc37a1f2b8677f2f45cda6a06f9cf462895e Mon Sep 17 00:00:00 2001 From: Qu Wenruo Date: Fri, 3 Jun 2016 10:34:26 +0800 Subject: btrfs-progs: convert-tests: Add test case for backup superblock migration New convert introduced simpler chunk/extent allocation algorithm, at the cost of complex backup superblock migration codes. Use specially built ext2 images to test if btrfs-convert can convert and rollback images without problem. All these special ext2 image have blocks/holes across 2nd btrfs backup superblock. The naming of test image is like the following: |<------superblock migration range----->| 64M 64M + 64K |-Data--|-Data--|/Hole//|-Data--|/Hole//|-Data--|--Data--| = drdhdhdrd These test cases should check all typical layouts and make sure new convert works. Signed-off-by: Qu Wenruo Signed-off-by: David Sterba --- .../drdhdhdrd.e2image.raw.xz | Bin 0 -> 84564 bytes .../drdhdhrh.e2image.raw.xz | Bin 0 -> 84568 bytes .../hrhdhdrd.e2image.raw.xz | Bin 0 -> 84556 bytes .../hrhdhrh.e2image.raw.xz | Bin 0 -> 84568 bytes .../004-ext2-backup-superblock-ranges/test.sh | 39 +++++++++++++++++++++ 5 files changed, 39 insertions(+) create mode 100644 tests/convert-tests/004-ext2-backup-superblock-ranges/drdhdhdrd.e2image.raw.xz create mode 100644 tests/convert-tests/004-ext2-backup-superblock-ranges/drdhdhrh.e2image.raw.xz create mode 100644 tests/convert-tests/004-ext2-backup-superblock-ranges/hrhdhdrd.e2image.raw.xz create mode 100644 tests/convert-tests/004-ext2-backup-superblock-ranges/hrhdhrh.e2image.raw.xz create mode 100755 tests/convert-tests/004-ext2-backup-superblock-ranges/test.sh diff --git a/tests/convert-tests/004-ext2-backup-superblock-ranges/drdhdhdrd.e2image.raw.xz b/tests/convert-tests/004-ext2-backup-superblock-ranges/drdhdhdrd.e2image.raw.xz new file mode 100644 index 00000000..73e2309c Binary files /dev/null and b/tests/convert-tests/004-ext2-backup-superblock-ranges/drdhdhdrd.e2image.raw.xz differ diff --git a/tests/convert-tests/004-ext2-backup-superblock-ranges/drdhdhrh.e2image.raw.xz b/tests/convert-tests/004-ext2-backup-superblock-ranges/drdhdhrh.e2image.raw.xz new file mode 100644 index 00000000..0d5442ff Binary files /dev/null and b/tests/convert-tests/004-ext2-backup-superblock-ranges/drdhdhrh.e2image.raw.xz differ diff --git a/tests/convert-tests/004-ext2-backup-superblock-ranges/hrhdhdrd.e2image.raw.xz b/tests/convert-tests/004-ext2-backup-superblock-ranges/hrhdhdrd.e2image.raw.xz new file mode 100644 index 00000000..a1a30429 Binary files /dev/null and b/tests/convert-tests/004-ext2-backup-superblock-ranges/hrhdhdrd.e2image.raw.xz differ diff --git a/tests/convert-tests/004-ext2-backup-superblock-ranges/hrhdhrh.e2image.raw.xz b/tests/convert-tests/004-ext2-backup-superblock-ranges/hrhdhrh.e2image.raw.xz new file mode 100644 index 00000000..ac0dbc60 Binary files /dev/null and b/tests/convert-tests/004-ext2-backup-superblock-ranges/hrhdhrh.e2image.raw.xz differ diff --git a/tests/convert-tests/004-ext2-backup-superblock-ranges/test.sh b/tests/convert-tests/004-ext2-backup-superblock-ranges/test.sh new file mode 100755 index 00000000..493e4db5 --- /dev/null +++ b/tests/convert-tests/004-ext2-backup-superblock-ranges/test.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# Specially created e2image dump to test backup superblock migration for +# new convert. +# These images will cause the following problems if convert doesn't handle +# backup superblock migration well: +# 1) Assert while building free space tree +# 2) Error copying inodes +# 3) Discontinuous file extents after convert +# 4) Overlap file extents +# 5) Unable to rollback + +source $TOP/tests/common + +check_prereq btrfs-convert +check_prereq btrfs +check_prereq btrfs-show-super +check_global_prereq e2fsck +check_global_prereq xzcat + +setup_root_helper +prepare_test_dev 512M + +for src in $(find . -iname "*.e2image.raw.xz"); do + extracted=$(extract_image "$src") + run_check $SUDO_HELPER e2fsck -n -f $extracted + run_check $SUDO_HELPER $TOP/btrfs-convert $extracted + run_check $SUDO_HELPER $TOP/btrfs check $extracted + run_check $SUDO_HELPER $TOP/btrfs-show-super $extracted + + run_check $SUDO_HELPER mount -o loop $extracted $TEST_MNT + run_check $SUDO_HELPER e2fsck -n -f $TEST_MNT/ext2_saved/image + run_check $SUDO_HELPER umount $TEST_MNT + + run_check $SUDO_HELPER $TOP/btrfs check $extracted + run_check $SUDO_HELPER $TOP/btrfs-convert -r $extracted + run_check $SUDO_HELPER e2fsck -n -f $extracted + rm -f $extracted +done -- cgit v1.2.3