xfs/259: test more block sizes and handle minimum block size correctly

Currently xfs/259 tests against TEST_DIR for CRC support status to
decide whether 512 block size should be tested, which is wrong for this
test, because configuration of TEST_DIR is not controlled by test
harness and can be different to the configuration being used in the
test.

Fix it by reversing the block size order that's tested and capture the
output of the actual mkfs command that is being tested, and determine if
512 byte block sizes should be tested based on that output.

While we're at it, I think the test matrix can be enlarged as well, 4k,
2k, 1k and 512 block size can be tested in each fs size boundary, not
only the minimum block size.

Suggested-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
Eryu Guan
2016-05-09 10:50:37 +10:00
committed by Dave Chinner
parent 45da5f51d4
commit 7898fdf670
2 changed files with 40 additions and 27 deletions
+24 -23
View File
@@ -51,32 +51,33 @@ testfile=$TEST_DIR/259.image
# Test various sizes slightly less than 4 TB. Need to handle different # Test various sizes slightly less than 4 TB. Need to handle different
# minimum block sizes for CRC enabled filesystems, but use a small log so we # minimum block sizes for CRC enabled filesystems, but use a small log so we
# don't write lots of zeros unnecessarily. # don't write lots of zeros unnecessarily.
xfs_info $TEST_DIR | _filter_mkfs 2> $tmp.mkfs > /dev/null sizes_to_check="4096 2048 1024 512"
. $tmp.mkfs blocksizes="4096 2048 1024 512"
if [ $_fs_has_crcs -eq 1 ]; then
blocksize=1024
sizes_to_check="1024 2048 4096"
echo "Trying to make (4 TB - 512) B long xfs fs image"
else
blocksize=512
sizes_to_check="512 1024 2048 4096"
fi
four_TB=$(_math "2^42") four_TB=$(_math "2^42")
# The initial value of _fs_has_crcs is not important, because we start testing
# with 4096 block size, it only matters for 512 block size test
_fs_has_crcs=0
for del in $sizes_to_check; do for del in $sizes_to_check; do
ddseek=$(_math "$four_TB - $del") for bs in $blocksizes; do
echo "Trying to make (4 TB - $del) B long xfs fs image" echo "Trying to make (4TB - ${del}B) long xfs, block size $bs"
rm -f "$testfile" # skip tests with 512 block size if the fs created has crc
dd if=/dev/zero "of=$testfile" bs=1 count=0 seek=$ddseek \ # enabled by default
>/dev/null 2>&1 || echo "dd failed" if [ $_fs_has_crcs -eq 1 -a $bs -eq 512 ]; then
lofile=$(losetup -f) break;
losetup $lofile "$testfile" fi
"$MKFS_XFS_PROG" -l size=32m -b size=$blocksize $lofile \ ddseek=$(_math "$four_TB - $del")
>/dev/null || echo "mkfs failed!" rm -f "$testfile"
sync dd if=/dev/zero "of=$testfile" bs=1 count=0 seek=$ddseek \
losetup -d $lofile >/dev/null 2>&1 || echo "dd failed"
lofile=$(losetup -f)
losetup $lofile "$testfile"
$MKFS_XFS_PROG -l size=32m -b size=$bs $lofile | _filter_mkfs \
>/dev/null 2> $tmp.mkfs || echo "mkfs failed!"
. $tmp.mkfs
sync
losetup -d $lofile
done
done done
status=0 status=0
exit exit
+16 -4
View File
@@ -1,5 +1,17 @@
QA output created by 259 QA output created by 259
Trying to make (4 TB - 512) B long xfs fs image Trying to make (4TB - 4096B) long xfs, block size 4096
Trying to make (4 TB - 1024) B long xfs fs image Trying to make (4TB - 4096B) long xfs, block size 2048
Trying to make (4 TB - 2048) B long xfs fs image Trying to make (4TB - 4096B) long xfs, block size 1024
Trying to make (4 TB - 4096) B long xfs fs image Trying to make (4TB - 4096B) long xfs, block size 512
Trying to make (4TB - 2048B) long xfs, block size 4096
Trying to make (4TB - 2048B) long xfs, block size 2048
Trying to make (4TB - 2048B) long xfs, block size 1024
Trying to make (4TB - 2048B) long xfs, block size 512
Trying to make (4TB - 1024B) long xfs, block size 4096
Trying to make (4TB - 1024B) long xfs, block size 2048
Trying to make (4TB - 1024B) long xfs, block size 1024
Trying to make (4TB - 1024B) long xfs, block size 512
Trying to make (4TB - 512B) long xfs, block size 4096
Trying to make (4TB - 512B) long xfs, block size 2048
Trying to make (4TB - 512B) long xfs, block size 1024
Trying to make (4TB - 512B) long xfs, block size 512