* [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
* [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
* [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
* [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 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
* 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
* 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
* 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