btrfs-progs: tests: Add new test case for file extent false alerts

Lowmem mode exposed several false alerts, all related to file extents
check.

1) Partly written prealloc extent
   Cause lowmem mode to report missing csum or prealloc extent should
   not have csum

2) Compressed inline extent
   Cause lowmem mode to find mismatch on inline len and item len.
   While no error message is output but exit silently.

Reported-by: Chris Murphy <chris@colorremedies.com>
Reported-by: Christoph Anton Mitterer <calestyo@scientia.net>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
master
Qu Wenruo 2017-02-21 16:34:36 +08:00 committed by David Sterba
parent 381b43a020
commit cbaa289d3d
1 changed files with 42 additions and 0 deletions

View File

@ -0,0 +1,42 @@
#!/bin/bash
# Confirm btrfs check can check file extents without causing false alert
source $TOP/tests/common
check_prereq btrfs
check_prereq mkfs.btrfs
check_global_prereq xfs_io
check_global_prereq fallocate
setup_root_helper
prepare_test_dev 128M
# Do some write into a large prealloc range
# Lowmem mode can report missing csum due to wrong csum range
test_paritical_write_into_prealloc()
{
run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev
run_check fallocate -l 128K "$TEST_MNT/file"
sync
run_check xfs_io -c "pwrite 0 64K" "$TEST_MNT/file"
run_check_umount_test_dev
run_check "$TOP/btrfs" check "$TEST_DEV"
}
# Inline compressed file extent
# Lowmem mode can cause silent error without any error message
# due to too restrict check on inline extent size
test_compressed_inline_extent()
{
run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$TEST_DEV"
run_check_mount_test_dev -o compress=lzo,max_inline=2048
run_check xfs_io -f -c "pwrite 0 1K" "$TEST_MNT/file"
run_check_umount_test_dev
run_check "$TOP/btrfs" check "$TEST_DEV"
}
test_paritical_write_into_prealloc
test_compressed_inline_extent