* [PATCH v2 0/4] Fixes for mkfs.xfs with high amount of CPUs and SSDs
@ 2026-05-14 11:39 Lukas Herbolt
2026-05-14 11:39 ` [PATCH v2 1/4] common/rc: Add helper to calculate percentage of free space available Lukas Herbolt
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Lukas Herbolt @ 2026-05-14 11:39 UTC (permalink / raw)
To: zlang, djwong; +Cc: fstests, xfs-linux, Lukas Herbolt
Since xfsprogs v6.13.0 mkfs.xfs scales the log size on SSDs with the amount
of CPUs. This leads to various failures from ENOSPC in generic/102 and generic/172
(the xfs log can take up to 256MB on 1GB test FS) or depleting the dmthin
metadata area in generic/347. Downsize of the percentage change is we cannot
longer check the exact amount of data xfs_io wrote in the generic/102 test.
The xfs/21{6,7} are testing the old behavior before the concurrency option was
introduced. Forcing the old behavior on newer mkfs.xfs.
Lukas Herbolt (4):
common/rc: Add helper to calculate percentage of free space available
common/xfs: helper function to check if -l/-d/-r concurrency flags.
generic/{102,172,347}: Adapt test for XFS on systems with 128+CPUs +
SSDs
xfs/21{6,7} Use default -l concurrency=0 on mkfs.xfs that supports it
common/rc | 10 ++++++++++
common/xfs | 9 +++++++++
tests/generic/102 | 5 +++--
tests/generic/102.out | 20 ++++++++++----------
tests/generic/172 | 8 ++++----
tests/generic/347 | 9 ++++++++-
tests/xfs/216 | 6 +++++-
tests/xfs/217 | 7 ++++++-
8 files changed, 55 insertions(+), 19 deletions(-)
--
2.54.0
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCH v2 1/4] common/rc: Add helper to calculate percentage of free space available 2026-05-14 11:39 [PATCH v2 0/4] Fixes for mkfs.xfs with high amount of CPUs and SSDs Lukas Herbolt @ 2026-05-14 11:39 ` Lukas Herbolt 2026-05-14 14:45 ` Darrick J. Wong 2026-05-14 11:39 ` [PATCH v2 2/4] common/xfs: helper function to check if -l/-d/-r concurrecy flags Lukas Herbolt ` (2 subsequent siblings) 3 siblings, 1 reply; 9+ messages in thread From: Lukas Herbolt @ 2026-05-14 11:39 UTC (permalink / raw) To: zlang, djwong; +Cc: fstests, xfs-linux, Lukas Herbolt It calculates percentage of filesystem available space and returns it in MB. This helper will be used in the following test/generic fixes. Signed-off-by: Lukas Herbolt <lukas@herbolt.com> --- changes v2: spelling and description common/rc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/common/rc b/common/rc index 5fe44e2158ff..9fc733ebdcf4 100644 --- a/common/rc +++ b/common/rc @@ -6189,6 +6189,16 @@ _require_fanotify_ioerrors() _notrun "$FSTYP does not support fanotify ioerrors" } +# Computes a percentage of the available space in a filesystem and +# returns that quantity in MB. The percentage must not contain a percent +# sign ("%"). +# usage example: +# _mb_pct_of_available_space <mount point> <percent> +# +_mb_pct_of_available_space() +{ + _df_device $1 | $AWK_PROG -v pct=$2 '{printf "%.f", (($5*(pct/100))/1024)}' +} ################################################################################ # make sure this script returns success /bin/true -- 2.54.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/4] common/rc: Add helper to calculate percentage of free space available 2026-05-14 11:39 ` [PATCH v2 1/4] common/rc: Add helper to calculate percentage of free space available Lukas Herbolt @ 2026-05-14 14:45 ` Darrick J. Wong 0 siblings, 0 replies; 9+ messages in thread From: Darrick J. Wong @ 2026-05-14 14:45 UTC (permalink / raw) To: Lukas Herbolt; +Cc: zlang, fstests, xfs [fix linux-xfs cc on everything] On Thu, May 14, 2026 at 01:39:09PM +0200, Lukas Herbolt wrote: > It calculates percentage of filesystem available space and returns it > in MB. This helper will be used in the following test/generic fixes. > > Signed-off-by: Lukas Herbolt <lukas@herbolt.com> Looks fine to me Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> --D > --- > changes v2: > spelling and description > common/rc | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/common/rc b/common/rc > index 5fe44e2158ff..9fc733ebdcf4 100644 > --- a/common/rc > +++ b/common/rc > @@ -6189,6 +6189,16 @@ _require_fanotify_ioerrors() > _notrun "$FSTYP does not support fanotify ioerrors" > } > > +# Computes a percentage of the available space in a filesystem and > +# returns that quantity in MB. The percentage must not contain a percent > +# sign ("%"). > +# usage example: > +# _mb_pct_of_available_space <mount point> <percent> > +# > +_mb_pct_of_available_space() > +{ > + _df_device $1 | $AWK_PROG -v pct=$2 '{printf "%.f", (($5*(pct/100))/1024)}' > +} > ################################################################################ > # make sure this script returns success > /bin/true > -- > 2.54.0 > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 2/4] common/xfs: helper function to check if -l/-d/-r concurrecy flags. 2026-05-14 11:39 [PATCH v2 0/4] Fixes for mkfs.xfs with high amount of CPUs and SSDs Lukas Herbolt 2026-05-14 11:39 ` [PATCH v2 1/4] common/rc: Add helper to calculate percentage of free space available Lukas Herbolt @ 2026-05-14 11:39 ` Lukas Herbolt 2026-05-14 14:46 ` Darrick J. Wong 2026-05-14 11:39 ` [PATCH v2 3/4] generic/{102,172,347}: Adapt test for XFS on systems with 128+CPUs + SSDs Lukas Herbolt 2026-05-14 11:39 ` [PATCH v2 4/4] xfs/21{6,7} Use default -l concurrency=0 on mkfs.xfs that supports it Lukas Herbolt 3 siblings, 1 reply; 9+ messages in thread From: Lukas Herbolt @ 2026-05-14 11:39 UTC (permalink / raw) To: zlang, djwong; +Cc: fstests, xfs-linux, Lukas Herbolt Check if the requested flag is supported by the mkfs.xfs on scratch device. Signed-off-by: Lukas Herbolt <lukas@herbolt.com> --- --- changes v2: -l/-d were introduced at same release no need to check both common/xfs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/common/xfs b/common/xfs index f7a6d2f2f03a..c48b043faf80 100644 --- a/common/xfs +++ b/common/xfs @@ -2399,3 +2399,12 @@ _require_xfs_healer() _xfs_healer --supported "$@" &>/dev/null || \ _notrun "health monitoring not supported on this kernel" } + +# -l/-d concurrency came in same xfsprogs release v6.7 + _scratch_mkfs_xfs_supports_concurrency() +{ + local arg="${1:-d}" + + test "$arg" = "-l" && arg="-d" + _scratch_mkfs_xfs_supported "$arg" concurrency=0 +} -- 2.54.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/4] common/xfs: helper function to check if -l/-d/-r concurrecy flags. 2026-05-14 11:39 ` [PATCH v2 2/4] common/xfs: helper function to check if -l/-d/-r concurrecy flags Lukas Herbolt @ 2026-05-14 14:46 ` Darrick J. Wong 0 siblings, 0 replies; 9+ messages in thread From: Darrick J. Wong @ 2026-05-14 14:46 UTC (permalink / raw) To: Lukas Herbolt; +Cc: zlang, fstests, xfs On Thu, May 14, 2026 at 01:39:11PM +0200, Lukas Herbolt wrote: > Check if the requested flag is supported by the mkfs.xfs on scratch > device. > > Signed-off-by: Lukas Herbolt <lukas@herbolt.com> > --- > --- > changes v2: > -l/-d were introduced at same release no need to check both Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> --D > common/xfs | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/common/xfs b/common/xfs > index f7a6d2f2f03a..c48b043faf80 100644 > --- a/common/xfs > +++ b/common/xfs > @@ -2399,3 +2399,12 @@ _require_xfs_healer() > _xfs_healer --supported "$@" &>/dev/null || \ > _notrun "health monitoring not supported on this kernel" > } > + > +# -l/-d concurrency came in same xfsprogs release v6.7 > + _scratch_mkfs_xfs_supports_concurrency() > +{ > + local arg="${1:-d}" > + > + test "$arg" = "-l" && arg="-d" > + _scratch_mkfs_xfs_supported "$arg" concurrency=0 > +} > -- > 2.54.0 > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 3/4] generic/{102,172,347}: Adapt test for XFS on systems with 128+CPUs + SSDs 2026-05-14 11:39 [PATCH v2 0/4] Fixes for mkfs.xfs with high amount of CPUs and SSDs Lukas Herbolt 2026-05-14 11:39 ` [PATCH v2 1/4] common/rc: Add helper to calculate percentage of free space available Lukas Herbolt 2026-05-14 11:39 ` [PATCH v2 2/4] common/xfs: helper function to check if -l/-d/-r concurrecy flags Lukas Herbolt @ 2026-05-14 11:39 ` Lukas Herbolt 2026-05-14 14:46 ` Darrick J. Wong 2026-05-14 11:39 ` [PATCH v2 4/4] xfs/21{6,7} Use default -l concurrency=0 on mkfs.xfs that supports it Lukas Herbolt 3 siblings, 1 reply; 9+ messages in thread From: Lukas Herbolt @ 2026-05-14 11:39 UTC (permalink / raw) To: zlang, djwong; +Cc: fstests, xfs-linux, Lukas Herbolt XFS will now scale by default its log size according the amount of CPUs. This can significantly increase the log area and using hard-coded size of file size will make the test file. Using the X percent of the free space to create the file will let the test proceed. For generic/102 we also have to change the 102.out as we cannot know the amount written data and it has to be filtered out. For generic/172 we just use the new function to calculate file big enough to consume most of the available space. The generic/347 will use -l concurrency=0 in case it is being run on the XFS filesystem and mkfs.xfs already supports this option. Signed-off-by: Lukas Herbolt <lukas@herbolt.com> --- changes v2: test: generic/102 change the file size to 80% as it's closer to original size of 800MB tests/generic/102 | 5 +++-- tests/generic/102.out | 20 ++++++++++---------- tests/generic/172 | 8 ++++---- tests/generic/347 | 9 ++++++++- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/tests/generic/102 b/tests/generic/102 index daa5061bd3fe..be9ddda30a1d 100755 --- a/tests/generic/102 +++ b/tests/generic/102 @@ -23,12 +23,13 @@ _require_scratch dev_size=$((1024 * 1024 * 1024)) # 1GB filesystem _scratch_mkfs_sized $dev_size >>$seqres.full 2>&1 _scratch_mount +file_size=`_mb_pct_of_available_space $SCRATCH_DEV 80` for ((i = 0; i < 10; i++)); do echo "loop $i" >>$seqres.full - $XFS_IO_PROG -f -c "pwrite -b 1m 0 800m" "$SCRATCH_MNT"/file | \ -_filter_xfs_io | _filter_scratch + $XFS_IO_PROG -f -c "pwrite -b 1m 0 ${file_size}m" "$SCRATCH_MNT"/file | \ +_filter_xfs_io_numbers | _filter_scratch rm -f "$SCRATCH_MNT"/file done diff --git a/tests/generic/102.out b/tests/generic/102.out index b58aa5ccc68b..647bb23abec1 100644 --- a/tests/generic/102.out +++ b/tests/generic/102.out @@ -1,21 +1,21 @@ QA output created by 102 -wrote 838860800/838860800 bytes at offset 0 +wrote XXXX/XXXX bytes at offset XXXX XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -wrote 838860800/838860800 bytes at offset 0 +wrote XXXX/XXXX bytes at offset XXXX XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -wrote 838860800/838860800 bytes at offset 0 +wrote XXXX/XXXX bytes at offset XXXX XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -wrote 838860800/838860800 bytes at offset 0 +wrote XXXX/XXXX bytes at offset XXXX XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -wrote 838860800/838860800 bytes at offset 0 +wrote XXXX/XXXX bytes at offset XXXX XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -wrote 838860800/838860800 bytes at offset 0 +wrote XXXX/XXXX bytes at offset XXXX XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -wrote 838860800/838860800 bytes at offset 0 +wrote XXXX/XXXX bytes at offset XXXX XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -wrote 838860800/838860800 bytes at offset 0 +wrote XXXX/XXXX bytes at offset XXXX XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -wrote 838860800/838860800 bytes at offset 0 +wrote XXXX/XXXX bytes at offset XXXX XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -wrote 838860800/838860800 bytes at offset 0 +wrote XXXX/XXXX bytes at offset XXXX XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) diff --git a/tests/generic/172 b/tests/generic/172 index b67e817b667b..06f9370f065d 100755 --- a/tests/generic/172 +++ b/tests/generic/172 @@ -37,15 +37,15 @@ echo "Reformat with appropriate size" blksz="$(_get_block_size $testdir)" _scratch_unmount -file_size=$((768 * 1024 * 1024)) fs_size=$((1024 * 1024 * 1024)) _scratch_mkfs_sized $fs_size >> $seqres.full 2>&1 _scratch_mount >> $seqres.full 2>&1 rm -rf $testdir mkdir $testdir +file_size=`_mb_pct_of_available_space $SCRATCH_DEV 70` echo "Create a big file and reflink it" -_pwrite_byte 0x61 0 $file_size $testdir/bigfile >> $seqres.full 2>&1 +_pwrite_byte 0x61 0 ${file_size}m $testdir/bigfile >> $seqres.full 2>&1 _cp_reflink $testdir/bigfile $testdir/clonefile _scratch_sync @@ -54,7 +54,7 @@ _fill_fs $fs_size $testdir/space $blksz 0 >> $seqres.full 2>&1 _scratch_sync echo "CoW the big file" -out="$(_pwrite_byte 0x62 0 $file_size $testdir/bigfile 2>&1 | \ +out="$(_pwrite_byte 0x62 0 ${file_size}m $testdir/bigfile 2>&1 | \ _filter_xfs_io_error)" echo ${out} | grep -q "No space left on device" || echo "CoW should have failed with ENOSPC" echo ${out} >> $seqres.full 2>&1 @@ -63,7 +63,7 @@ echo ${out} echo "Remount and try CoW again" _scratch_cycle_mount -out="$(_pwrite_byte 0x62 0 $file_size $testdir/bigfile 2>&1 | \ +out="$(_pwrite_byte 0x62 0 ${file_size}m $testdir/bigfile 2>&1 | \ _filter_xfs_io_error)" echo ${out} | grep -q "No space left on device" || echo "CoW should have failed with ENOSPC" echo ${out} >> $seqres.full 2>&1 diff --git a/tests/generic/347 b/tests/generic/347 index 5c0e3f949585..06df0cf9eddc 100755 --- a/tests/generic/347 +++ b/tests/generic/347 @@ -14,6 +14,13 @@ BACKING_SIZE=$((500 * 1024 * 1024 / 512)) # 500M VIRTUAL_SIZE=$((10 * $BACKING_SIZE)) # 5000M GROW_SIZE=$((100 * 1024 * 1024 / 512)) # 100M +dmthin_mkfs_opts="" +if [ $FSTYP == "xfs" ]; then + if _scratch_mkfs_xfs_supports_concurrency -l >> $seqres.full 2>&1; then + dmthin_mkfs_opts="-l concurrency=0" + fi +fi + # Override the default cleanup function. _cleanup() { @@ -25,7 +32,7 @@ _setup_thin() { _dmthin_init $BACKING_SIZE $VIRTUAL_SIZE _dmthin_set_queue - _dmthin_mkfs + _dmthin_mkfs $dmthin_mkfs_opts _dmthin_mount } -- 2.54.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 3/4] generic/{102,172,347}: Adapt test for XFS on systems with 128+CPUs + SSDs 2026-05-14 11:39 ` [PATCH v2 3/4] generic/{102,172,347}: Adapt test for XFS on systems with 128+CPUs + SSDs Lukas Herbolt @ 2026-05-14 14:46 ` Darrick J. Wong 0 siblings, 0 replies; 9+ messages in thread From: Darrick J. Wong @ 2026-05-14 14:46 UTC (permalink / raw) To: Lukas Herbolt; +Cc: zlang, fstests, xfs On Thu, May 14, 2026 at 01:39:13PM +0200, Lukas Herbolt wrote: > XFS will now scale by default its log size according the amount of CPUs. This > can significantly increase the log area and using hard-coded size of file size > will make the test file. Using the X percent of the free space to create the > file will let the test proceed. > > For generic/102 we also have to change the 102.out as we cannot know the > amount written data and it has to be filtered out. > > For generic/172 we just use the new function to calculate file big enough > to consume most of the available space. > > The generic/347 will use -l concurrency=0 in case it is being run on the > XFS filesystem and mkfs.xfs already supports this option. > > Signed-off-by: Lukas Herbolt <lukas@herbolt.com> > --- > changes v2: > test: generic/102 change the file size to 80% as it's closer to > original size of 800MB Cool, thanks. Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> --D > tests/generic/102 | 5 +++-- > tests/generic/102.out | 20 ++++++++++---------- > tests/generic/172 | 8 ++++---- > tests/generic/347 | 9 ++++++++- > 4 files changed, 25 insertions(+), 17 deletions(-) > > diff --git a/tests/generic/102 b/tests/generic/102 > index daa5061bd3fe..be9ddda30a1d 100755 > --- a/tests/generic/102 > +++ b/tests/generic/102 > @@ -23,12 +23,13 @@ _require_scratch > dev_size=$((1024 * 1024 * 1024)) # 1GB filesystem > _scratch_mkfs_sized $dev_size >>$seqres.full 2>&1 > _scratch_mount > +file_size=`_mb_pct_of_available_space $SCRATCH_DEV 80` > > for ((i = 0; i < 10; i++)); do > echo "loop $i" >>$seqres.full > > - $XFS_IO_PROG -f -c "pwrite -b 1m 0 800m" "$SCRATCH_MNT"/file | \ > -_filter_xfs_io | _filter_scratch > + $XFS_IO_PROG -f -c "pwrite -b 1m 0 ${file_size}m" "$SCRATCH_MNT"/file | \ > +_filter_xfs_io_numbers | _filter_scratch > > rm -f "$SCRATCH_MNT"/file > done > diff --git a/tests/generic/102.out b/tests/generic/102.out > index b58aa5ccc68b..647bb23abec1 100644 > --- a/tests/generic/102.out > +++ b/tests/generic/102.out > @@ -1,21 +1,21 @@ > QA output created by 102 > -wrote 838860800/838860800 bytes at offset 0 > +wrote XXXX/XXXX bytes at offset XXXX > XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -wrote 838860800/838860800 bytes at offset 0 > +wrote XXXX/XXXX bytes at offset XXXX > XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -wrote 838860800/838860800 bytes at offset 0 > +wrote XXXX/XXXX bytes at offset XXXX > XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -wrote 838860800/838860800 bytes at offset 0 > +wrote XXXX/XXXX bytes at offset XXXX > XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -wrote 838860800/838860800 bytes at offset 0 > +wrote XXXX/XXXX bytes at offset XXXX > XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -wrote 838860800/838860800 bytes at offset 0 > +wrote XXXX/XXXX bytes at offset XXXX > XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -wrote 838860800/838860800 bytes at offset 0 > +wrote XXXX/XXXX bytes at offset XXXX > XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -wrote 838860800/838860800 bytes at offset 0 > +wrote XXXX/XXXX bytes at offset XXXX > XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -wrote 838860800/838860800 bytes at offset 0 > +wrote XXXX/XXXX bytes at offset XXXX > XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -wrote 838860800/838860800 bytes at offset 0 > +wrote XXXX/XXXX bytes at offset XXXX > XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > diff --git a/tests/generic/172 b/tests/generic/172 > index b67e817b667b..06f9370f065d 100755 > --- a/tests/generic/172 > +++ b/tests/generic/172 > @@ -37,15 +37,15 @@ echo "Reformat with appropriate size" > blksz="$(_get_block_size $testdir)" > _scratch_unmount > > -file_size=$((768 * 1024 * 1024)) > fs_size=$((1024 * 1024 * 1024)) > _scratch_mkfs_sized $fs_size >> $seqres.full 2>&1 > _scratch_mount >> $seqres.full 2>&1 > rm -rf $testdir > mkdir $testdir > +file_size=`_mb_pct_of_available_space $SCRATCH_DEV 70` > > echo "Create a big file and reflink it" > -_pwrite_byte 0x61 0 $file_size $testdir/bigfile >> $seqres.full 2>&1 > +_pwrite_byte 0x61 0 ${file_size}m $testdir/bigfile >> $seqres.full 2>&1 > _cp_reflink $testdir/bigfile $testdir/clonefile > _scratch_sync > > @@ -54,7 +54,7 @@ _fill_fs $fs_size $testdir/space $blksz 0 >> $seqres.full 2>&1 > _scratch_sync > > echo "CoW the big file" > -out="$(_pwrite_byte 0x62 0 $file_size $testdir/bigfile 2>&1 | \ > +out="$(_pwrite_byte 0x62 0 ${file_size}m $testdir/bigfile 2>&1 | \ > _filter_xfs_io_error)" > echo ${out} | grep -q "No space left on device" || echo "CoW should have failed with ENOSPC" > echo ${out} >> $seqres.full 2>&1 > @@ -63,7 +63,7 @@ echo ${out} > echo "Remount and try CoW again" > _scratch_cycle_mount > > -out="$(_pwrite_byte 0x62 0 $file_size $testdir/bigfile 2>&1 | \ > +out="$(_pwrite_byte 0x62 0 ${file_size}m $testdir/bigfile 2>&1 | \ > _filter_xfs_io_error)" > echo ${out} | grep -q "No space left on device" || echo "CoW should have failed with ENOSPC" > echo ${out} >> $seqres.full 2>&1 > diff --git a/tests/generic/347 b/tests/generic/347 > index 5c0e3f949585..06df0cf9eddc 100755 > --- a/tests/generic/347 > +++ b/tests/generic/347 > @@ -14,6 +14,13 @@ BACKING_SIZE=$((500 * 1024 * 1024 / 512)) # 500M > VIRTUAL_SIZE=$((10 * $BACKING_SIZE)) # 5000M > GROW_SIZE=$((100 * 1024 * 1024 / 512)) # 100M > > +dmthin_mkfs_opts="" > +if [ $FSTYP == "xfs" ]; then > + if _scratch_mkfs_xfs_supports_concurrency -l >> $seqres.full 2>&1; then > + dmthin_mkfs_opts="-l concurrency=0" > + fi > +fi > + > # Override the default cleanup function. > _cleanup() > { > @@ -25,7 +32,7 @@ _setup_thin() > { > _dmthin_init $BACKING_SIZE $VIRTUAL_SIZE > _dmthin_set_queue > - _dmthin_mkfs > + _dmthin_mkfs $dmthin_mkfs_opts > _dmthin_mount > } > > -- > 2.54.0 > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 4/4] xfs/21{6,7} Use default -l concurrency=0 on mkfs.xfs that supports it 2026-05-14 11:39 [PATCH v2 0/4] Fixes for mkfs.xfs with high amount of CPUs and SSDs Lukas Herbolt ` (2 preceding siblings ...) 2026-05-14 11:39 ` [PATCH v2 3/4] generic/{102,172,347}: Adapt test for XFS on systems with 128+CPUs + SSDs Lukas Herbolt @ 2026-05-14 11:39 ` Lukas Herbolt 2026-05-14 14:47 ` Darrick J. Wong 3 siblings, 1 reply; 9+ messages in thread From: Lukas Herbolt @ 2026-05-14 11:39 UTC (permalink / raw) To: zlang, djwong; +Cc: fstests, xfs-linux, Lukas Herbolt The XFS concurrency optimization breaks the log sizing check on systems with non-rotational disks and high amount of CPUs. Default to the old behavior with -l concurrency=0 and with -d concurrency=0. Signed-off-by: Lukas Herbolt <lukas@herbolt.com> --- changes v2: use default mkfs.xfs for scratch device remove the double check -l/-d as those were introduced together tests/xfs/216 | 6 +++++- tests/xfs/217 | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/tests/xfs/216 b/tests/xfs/216 index 091c11d08642..0148e7f4de3e 100755 --- a/tests/xfs/216 +++ b/tests/xfs/216 @@ -22,13 +22,17 @@ _cleanup() _require_scratch _scratch_mkfs_xfs >/dev/null 2>&1 +if _scratch_mkfs_xfs_supports_concurrency -l >> $seqres.full 2>&1; then + loop_mkfs_opts="-l concurrency=0" +else + loop_mkfs_opts="" +fi _scratch_mount _require_loop LOOP_IMG=$SCRATCH_MNT/test_fs LOOP_MNT=$SCRATCH_MNT/test_fs_dir -loop_mkfs_opts= $MKFS_XFS_PROG 2>&1 | grep -q rmapbt && \ loop_mkfs_opts="$loop_mkfs_opts -m rmapbt=0" $MKFS_XFS_PROG 2>&1 | grep -q reflink && \ diff --git a/tests/xfs/217 b/tests/xfs/217 index dae6ce55f475..23aae842d1fb 100755 --- a/tests/xfs/217 +++ b/tests/xfs/217 @@ -21,6 +21,11 @@ _cleanup() _require_scratch _scratch_mkfs_xfs >/dev/null 2>&1 +if _scratch_mkfs_xfs_supports_concurrency -l >> $seqres.full 2>&1; then + loop_mkfs_opts="-l concurrency=0 -d concurrency=0" +else + loop_mkfs_opts="" +fi _scratch_mount # 16T mkfs requires a bit over 2G free _require_fs_space $SCRATCH_MNT 2202000 @@ -34,7 +39,7 @@ _do_mkfs() for i in $*; do echo -n "fssize=${i}g " $MKFS_XFS_PROG -f -b size=4096 -l version=2 \ - -d size=${i}g $loop_dev |grep log + -d size=${i}g $loop_dev $loop_mkfs_opts |grep log _mount $loop_dev $LOOP_MNT echo "test write" > $LOOP_MNT/test _unmount $LOOP_MNT > /dev/null 2>&1 -- 2.54.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 4/4] xfs/21{6,7} Use default -l concurrency=0 on mkfs.xfs that supports it 2026-05-14 11:39 ` [PATCH v2 4/4] xfs/21{6,7} Use default -l concurrency=0 on mkfs.xfs that supports it Lukas Herbolt @ 2026-05-14 14:47 ` Darrick J. Wong 0 siblings, 0 replies; 9+ messages in thread From: Darrick J. Wong @ 2026-05-14 14:47 UTC (permalink / raw) To: Lukas Herbolt; +Cc: zlang, fstests, xfs On Thu, May 14, 2026 at 01:39:15PM +0200, Lukas Herbolt wrote: > The XFS concurrency optimization breaks the log sizing check on > systems with non-rotational disks and high amount of CPUs. Default to > the old behavior with -l concurrency=0 and with -d concurrency=0. > > Signed-off-by: Lukas Herbolt <lukas@herbolt.com> > --- > changes v2: > use default mkfs.xfs for scratch device > remove the double check -l/-d as those were introduced together Yeah, sorry about breaking that. :/ Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> --D > tests/xfs/216 | 6 +++++- > tests/xfs/217 | 7 ++++++- > 2 files changed, 11 insertions(+), 2 deletions(-) > > diff --git a/tests/xfs/216 b/tests/xfs/216 > index 091c11d08642..0148e7f4de3e 100755 > --- a/tests/xfs/216 > +++ b/tests/xfs/216 > @@ -22,13 +22,17 @@ _cleanup() > > _require_scratch > _scratch_mkfs_xfs >/dev/null 2>&1 > +if _scratch_mkfs_xfs_supports_concurrency -l >> $seqres.full 2>&1; then > + loop_mkfs_opts="-l concurrency=0" > +else > + loop_mkfs_opts="" > +fi > _scratch_mount > > _require_loop > LOOP_IMG=$SCRATCH_MNT/test_fs > LOOP_MNT=$SCRATCH_MNT/test_fs_dir > > -loop_mkfs_opts= > $MKFS_XFS_PROG 2>&1 | grep -q rmapbt && \ > loop_mkfs_opts="$loop_mkfs_opts -m rmapbt=0" > $MKFS_XFS_PROG 2>&1 | grep -q reflink && \ > diff --git a/tests/xfs/217 b/tests/xfs/217 > index dae6ce55f475..23aae842d1fb 100755 > --- a/tests/xfs/217 > +++ b/tests/xfs/217 > @@ -21,6 +21,11 @@ _cleanup() > > _require_scratch > _scratch_mkfs_xfs >/dev/null 2>&1 > +if _scratch_mkfs_xfs_supports_concurrency -l >> $seqres.full 2>&1; then > + loop_mkfs_opts="-l concurrency=0 -d concurrency=0" > +else > + loop_mkfs_opts="" > +fi > _scratch_mount > # 16T mkfs requires a bit over 2G free > _require_fs_space $SCRATCH_MNT 2202000 > @@ -34,7 +39,7 @@ _do_mkfs() > for i in $*; do > echo -n "fssize=${i}g " > $MKFS_XFS_PROG -f -b size=4096 -l version=2 \ > - -d size=${i}g $loop_dev |grep log > + -d size=${i}g $loop_dev $loop_mkfs_opts |grep log > _mount $loop_dev $LOOP_MNT > echo "test write" > $LOOP_MNT/test > _unmount $LOOP_MNT > /dev/null 2>&1 > -- > 2.54.0 > > ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-05-14 14:47 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-14 11:39 [PATCH v2 0/4] Fixes for mkfs.xfs with high amount of CPUs and SSDs Lukas Herbolt
2026-05-14 11:39 ` [PATCH v2 1/4] common/rc: Add helper to calculate percentage of free space available Lukas Herbolt
2026-05-14 14:45 ` Darrick J. Wong
2026-05-14 11:39 ` [PATCH v2 2/4] common/xfs: helper function to check if -l/-d/-r concurrecy flags Lukas Herbolt
2026-05-14 14:46 ` Darrick J. Wong
2026-05-14 11:39 ` [PATCH v2 3/4] generic/{102,172,347}: Adapt test for XFS on systems with 128+CPUs + SSDs Lukas Herbolt
2026-05-14 14:46 ` Darrick J. Wong
2026-05-14 11:39 ` [PATCH v2 4/4] xfs/21{6,7} Use default -l concurrency=0 on mkfs.xfs that supports it Lukas Herbolt
2026-05-14 14:47 ` Darrick J. Wong
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox