test-appliance: force 4 KB block size for bigalloc, bigalloc_inline
PATCH v2 1/1 test-appliance: force 4 KB block size for bigalloc, bigalloc_inline
The cfg file for the bigalloc test configuration does not explicitly define the file system block size as is done for the 4k configuration, although the intent is to test a file system with 4 KB blocks and 64 KB clusters. At least one test, shared/298, runs with a block size of 1 KB instead under bigalloc because it creates a file system image less than 512 MB in size, a result of the mke2fs.conf block size rule for small files.
shared/298 currently fails when run under bigalloc with 1 KB blocks. When the block size is set to 4 KB for the test, it passes.
Explicitly defining the bigalloc block size will help avoid similar surprises in current or future tests written to use small test files. Make the same change to the bigalloc_inline config file while we're at it.
v2: Modify the names of the bigalloc test configurations using 4 KB block sizes to explicitly reflect the block size. Change the documentation and supporting files to reflect this. Bring the bigalloc_4k_inline.exclude file up to date (and propagate a change to the other .exclude files). Add a new test configuration for bigalloc with 64k blocks, but don't add this configuration to the default list of all tests to be run for now.
The bigalloc_64k and huge_bigalloc_4k configurations are untested. The huge_bigalloc_4k.exclude file will likely need further work if used.
---
Documentation/android-xfstests.md | 2 +-
Documentation/kvm-quickstart.md | 2 +-
Documentation/kvm-xfstests.md | 2 +-
Documentation/what-is-xfstests.md | 2 +-
run-fstests/util/parse_cli | 2 +-
.../files/root/fs/ext4/cfg/all.list | 2 +-
.../fs/ext4/cfg/{bigalloc => bigalloc_4k} | 2 +-
.../{bigalloc.exclude => bigalloc_4k.exclude} | 8 ++-
.../{bigalloc_inline => bigalloc_4k_inline} | 2 +-
.../fs/ext4/cfg/bigalloc_4k_inline.exclude | 38 ++++++++++++++
.../files/root/fs/ext4/cfg/bigalloc_64k | 14 ++++++
.../root/fs/ext4/cfg/bigalloc_64k.exclude | 49 +++++++++++++++++++
.../root/fs/ext4/cfg/bigalloc_inline.exclude | 13 -----
.../files/root/fs/ext4/cfg/huge.list | 2 +-
.../cfg/{huge_bigalloc => huge_bigalloc_4k} | 3 +-
...alloc.exclude => huge_bigalloc_4k.exclude} | 2 +-
16 files changed, 119 insertions(+), 26 deletions(-)
rename test-appliance/files/root/fs/ext4/cfg/{bigalloc => bigalloc_4k} (90%)
rename test-appliance/files/root/fs/ext4/cfg/{bigalloc.exclude => bigalloc_4k.exclude} (83%)
rename test-appliance/files/root/fs/ext4/cfg/{bigalloc_inline => bigalloc_4k_inline} (88%)
create mode 100644 test-appliance/files/root/fs/ext4/cfg/bigalloc_4k_inline.exclude
create mode 100644 test-appliance/files/root/fs/ext4/cfg/bigalloc_64k
create mode 100644 test-appliance/files/root/fs/ext4/cfg/bigalloc_64k.exclude
delete mode 100644 test-appliance/files/root/fs/ext4/cfg/bigalloc_inline.exclude
rename test-appliance/files/root/fs/ext4/cfg/{huge_bigalloc => huge_bigalloc_4k} (90%)
rename test-appliance/files/root/fs/ext4/cfg/{huge_bigalloc.exclude => huge_bigalloc_4k.exclude} (70%)Documentation/android-xfstests.md +1 -1
@@ -26,7 +26,7 @@ devices. If you encounter a problem, please submit a fix! sufficient. This is the sum of three 5 GiB partitions, a shrunken 4 GiB userdata partition, and the various other partitions used by Android devices. For test configurations requiring large - partitions, like bigalloc, you'll need about 64 GiB instead. + partitions, like bigalloc_4k, you'll need about 64 GiB instead. - Ability to connect to the Android device with adb and fastboot. Usually this is done via a USB cable.
Documentation/kvm-quickstart.md +1 -1
@@ -41,7 +41,7 @@ 6. Run "kvm-xfstests smoke" to do a quick test. Or "kvm-xfstests -g auto" to do a full test. You can also run specific tests on - specific configurations, i.e., "kvm-xfstests -c bigalloc + specific configurations, i.e., "kvm-xfstests -c bigalloc_4k generic/013 generic/127". To run a shell, use "kvm-xfstests shell" For more information, please see the full [kvm-xfstests
Documentation/kvm-xfstests.md +1 -1
@@ -100,7 +100,7 @@ appliance is: By default <cfg> defaults to all, which will run the following configurations: "4k", "1k", "ext3", "nojournal", "ext3conv", -"dioread_nolock, "data_journal", "inline", "bigalloc", and +"dioread_nolock, "data_journal", "inline", "bigalloc_4k", and "bigalloc_1k". You may specify a single configuration or a comma separated list if you want to run a subset of all possible file system configurations.
Documentation/what-is-xfstests.md +1 -1
@@ -59,7 +59,7 @@ should be 5GB. Smaller, and some tests may not run correctly. Larger, and the tests will take a long time to run --- especially those tests that need to fill the file system to test ENOSPC handling. There are a few file system configurations for ext4 (most notable, -bigalloc) which require a 20GB test and scratch device. +bigalloc_4k) which require a 20GB test and scratch device. For this reason, kvm-xfstests uses five file system devices, /dev/vdb, /dev/vdc, /dev/vdd, /dev/vde, and /dev/vdf. (/dev/vda is used for the
run-fstests/util/parse_cli +1 -1
@@ -79,7 +79,7 @@ print_help () echo "" echo "Common file system configurations are:" echo " 4k 1k ext3 nojournal ext3conv metacsum dioread_nolock " - echo " data_journal bigalloc bigalloc_1k inline" + echo " data_journal bigalloc_4k bigalloc_1k inline" echo "" echo "xfstest names have the form: ext4/NNN generic/NNN shared/NNN" echo ""
test-appliance/files/root/fs/ext4/cfg/all.list +1 -1
@@ -7,6 +7,6 @@ ext3conv adv dioread_nolock data_journal -bigalloc +bigalloc_4k bigalloc_1k dax
test-appliance/files/root/fs/ext4/cfg/bigalloc_4k renamed from test-appliance/files/root/fs/ext4/cfg/bigalloc +1 -1
@@ -1,5 +1,5 @@ SIZE=large -export EXT_MKFS_OPTIONS="-O bigalloc" +export EXT_MKFS_OPTIONS="-b 4096 -O bigalloc" export EXT_MOUNT_OPTIONS="" # Until we can teach xfstests the difference between cluster size and
test-appliance/files/root/fs/ext4/cfg/bigalloc_4k.exclude renamed from test-appliance/files/root/fs/ext4/cfg/bigalloc.exclude +7 -1
@@ -1,4 +1,4 @@ -// exclude file for ext4/bigalloc +// exclude file for ext4/bigalloc_4k ext4/004 // dump/restore doesn't handle the bigalloc feature
@@ -8,6 +8,12 @@ ext4/004 // dump/restore doesn't handle the bigalloc feature // don't need to test this for all file system configs, so just skip it here. ext4/033 +// ext4/044 tries to mkfs the test file system as ext3 explicitly. This +// initially fails because ext3 and the inline_data feature are incompatible. +// However, _scratch_do_mkfs() retries by stripping off the bigalloc and +// inline_data options, resulting in a successful but irrelevant test. +ext4/044 + // This takes a *long* time and doesn't add much value to run on all // configurations. So we're going to be selective where we run it. generic/027
test-appliance/files/root/fs/ext4/cfg/bigalloc_4k_inline renamed from test-appliance/files/root/fs/ext4/cfg/bigalloc_inline +1 -1
@@ -1,5 +1,5 @@ SIZE=large -export EXT_MKFS_OPTIONS="-O bigalloc,inline_data" +export EXT_MKFS_OPTIONS="-b 4096 -O bigalloc,inline_data" export EXT_MOUNT_OPTIONS="" # Until we can teach xfstests the difference between cluster size and
test-appliance/files/root/fs/ext4/cfg/bigalloc_4k_inline.exclude new file +38 -0
@@ -0,0 +1,38 @@ +// exclude file for ext4/bigalloc_4k_inline + +ext4/004 // dump/restore doesn't handle the bigalloc feature + +// ext4/033 creates a special file system using dmhugedisk to test for +// inode overflow when online resizing. With a bigalloc config, this takes +// too much space, so test VM will hang or abort the test run. We +// don't need to test this for all file system configs, so just skip it here. +ext4/033 + +// ext4/044 tries to mkfs the test file system as ext3 explicitly. This +// initially fails because ext3 and the inline_data feature are incompatible. +// However, _scratch_do_mkfs() retries by stripping off the bigalloc and +// inline_data options, resulting in a successful but irrelevant test. +ext4/044 + +// This takes a *long* time and doesn't add much value to run on all +// configurations. So we're going to be selective where we run it. +generic/027 + +// This test is a quota accounting test. For bigalloc, the cluster +// size of 64k is way too big to deal with the artificial fudge used +// in the test to deal with wrong block sizes. The test really needs +// to be rewritten to understand block/allocation sizes.... +generic/219 + +// This test uses the block size to figure out how many files to +// create; for bigalloc, we need to use the cluster size instead of the +// block size. +generic/273 + +// These tests assume that the directory will get expanded when +// additional entries are added. With bigalloc and with htree +// directories, this is not the case. Since no blocks are added, +// there is no attempted block allocation and so the expected +// EDQUOT failure didn't happen. +generic/681 +generic/682
test-appliance/files/root/fs/ext4/cfg/bigalloc_64k new file +14 -0
@@ -0,0 +1,14 @@ +SIZE=large +export EXT_MKFS_OPTIONS="-b 65536 -O bigalloc" +export EXT_MOUNT_OPTIONS="" + +# Until we can teach xfstests the difference between cluster size and +# block size, avoid collapse_range and insert_range since these will +# fail due the fact that these operations require cluster-aligned +# ranges. +export FSX_AVOID="-C -I" +export FSSTRESS_AVOID="-f collapse=0 -f insert=0" +export XFS_IO_AVOID="fcollapse finsert" +TEST_SET_EXCLUDE="-x collapse,insert" + +TESTNAME="Ext4 64k block w/bigalloc"
test-appliance/files/root/fs/ext4/cfg/bigalloc_64k.exclude new file +49 -0
49 lines not on this page · raw message
test-appliance/files/root/fs/ext4/cfg/bigalloc_inline.exclude deleted +0 -13
@@ -1,13 +0,0 @@ -// exclude file for ext4/bigalloc_inline - -ext4/004 // dump/restore doesn't handle the bigalloc feature - -// ext4/033 creates a special file system using dmhugedisk to test for -// inode overflow when online resizing. With a bigalloc config, this takes -// too much space, so test VM will hang or abort the test run. We -// don't need to test this for all file system configs, so just skip it here. -ext4/033 - -// This takes a *long* time and doesn't add much value to run on all -// configurations. So we're going to be selective where we run it. -generic/027
test-appliance/files/root/fs/ext4/cfg/huge.list +1 -1
@@ -1,4 +1,4 @@ huge_4k huge_1k -huge_bigalloc +huge_bigalloc_4k huge_encrypt
test-appliance/files/root/fs/ext4/cfg/huge_bigalloc_4k renamed from test-appliance/files/root/fs/ext4/cfg/huge_bigalloc +1 -2
@@ -1,5 +1,5 @@ SIZE=large -export EXT_MKFS_OPTIONS="-O bigalloc" +export EXT_MKFS_OPTIONS="-b 4096 -O bigalloc" export EXT_MOUNT_OPTIONS="huge=always" # Until we can teach xfstests the difference between cluster size and
@@ -11,4 +11,3 @@ export FSSTRESS_AVOID="-f collapse=0 -f insert=0 -f zero=0" export XFS_IO_AVOID="fcollapse finsert zero" TESTNAME="Ext4 4k block w/bigalloc" -
test-appliance/files/root/fs/ext4/cfg/huge_bigalloc_4k.exclude renamed from test-appliance/files/root/fs/ext4/cfg/huge_bigalloc.exclude +1 -1
@@ -1,4 +1,4 @@ -// exclude file for ext4/huge_bigalloc +// exclude file for ext4/huge_bigalloc_4k // bigalloc does not support on-line defrag ext4/301
Signature · 1 line
2.30.2
Theodore Ts'o
AppliedQuoted 24 lines · Eric Whitney
The cfg file for the bigalloc test configuration does not explicitly define the file system block size as is done for the 4k configuration, although the intent is to test a file system with 4 KB blocks and 64 KB clusters. At least one test, shared/298, runs with a block size of 1 KB instead under bigalloc because it creates a file system image less than 512 MB in size, a result of the mke2fs.conf block size rule for small files.
shared/298 currently fails when run under bigalloc with 1 KB blocks. When the block size is set to 4 KB for the test, it passes.
Explicitly defining the bigalloc block size will help avoid similar surprises in current or future tests written to use small test files. Make the same change to the
bigalloc_inlineconfig file while we're at it.v2: Modify the names of the bigalloc test configurations using 4 KB block sizes to explicitly reflect the block size. Change the documentation and supporting files to reflect this. Bring the bigalloc_4k_inline.exclude file up to date (and propagate a change to the other .exclude files). Add a new test configuration for bigalloc with 64k blocks, but don't add this configuration to the default list of all tests to be run for now.
Quoted 4 lines
The
bigalloc_64kandhuge_bigalloc_4kconfigurations are untested. The huge_bigalloc_4k.exclude file will likely need further work if used.Signed-off-by Eric Whitney <[email protected]>
Thanks, applied.
- Ted