btrfs-progs: tests: Add test case to check file hole extents with NO_HOLES flag
authorQu Wenruo <quwenruo@cn.fujitsu.com>
Fri, 16 Jun 2017 01:43:23 +0000 (09:43 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 26 Jun 2017 15:10:02 +0000 (17:10 +0200)
Add test case which we have NO_HOLES incompat flag while still have
hole file extent.

This can be created by enabling NO_HOLES feature on an existing
filesystem, which lowmem mode would cause false alert for it.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
[ minor adjustments ]
Signed-off-by: David Sterba <dsterba@suse.com>
tests/fsck-tests/025-file-extents/test.sh

index e4bc424..ebe8a30 100755 (executable)
@@ -5,8 +5,10 @@ source "$TOP/tests/common"
 
 check_prereq btrfs
 check_prereq mkfs.btrfs
+check_prereq btrfstune
 check_global_prereq dd
 check_global_prereq fallocate
+check_global_prereq truncate
 
 setup_root_helper
 prepare_test_dev 128M
@@ -38,5 +40,21 @@ test_compressed_inline_extent()
        run_check "$TOP/btrfs" check "$TEST_DEV"
 }
 
+# File extent hole with NO_HOLES incompat feature set.
+# Lowmem mode will cause a false alert as it doesn't allow any file hole
+# extents, while we can set NO_HOLES at anytime we want, it's definitely a
+# false alert
+test_hole_extent_with_no_holes_flag()
+{
+       run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$TEST_DEV"
+       run_check_mount_test_dev
+
+       run_check $SUDO_HELPER truncate -s 16K "$TEST_MNT/tmp"
+       run_check_umount_test_dev
+       run_check $SUDO_HELPER "$TOP/btrfstune" -n "$TEST_DEV"
+       run_check "$TOP/btrfs" check "$TEST_DEV"
+}
+
 test_paritical_write_into_prealloc
 test_compressed_inline_extent
+test_hole_extent_with_no_holes_flag