All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] common/xfs: fix _scratch_mkfs_xfs_supports_concurrency
@ 2026-05-20 18:52 Darrick J. Wong
  2026-05-20 19:01 ` [PATCH 2/2] xfs/21[67]: fix mkfs log concurrency detection Darrick J. Wong
  2026-05-25  5:43 ` [PATCH 1/2] common/xfs: fix _scratch_mkfs_xfs_supports_concurrency Christoph Hellwig
  0 siblings, 2 replies; 7+ messages in thread
From: Darrick J. Wong @ 2026-05-20 18:52 UTC (permalink / raw)
  To: Zorro Lang; +Cc: fstests, xfs

From: Darrick J. Wong <djwong@kernel.org>

generic/347 regresses when external logs are in the configuration:

 --- a/generic/347.out		2025-07-15 14:45:15.044714644 -0700
 +++ b/generic/347.out.bad	2026-05-18 23:17:01.687750781 -0700
 @@ -1,2 +1,36 @@
  QA output created by 347
 -=== completed
 +Cannot specify both -l logdev and -l concurrency
 +Usage: mkfs.xfs

Since this actually tests running mkfs.xfs with $SCRATCH_OPTIONS, the
helper ought to have detected that you can't give both.  Unfortunately,
there's a weird switch that turns -l into -d even though they're not
quite the same option.  Delete that, and fix the indentation (tabs, not
spaces) in the helper.

Cc: <fstests@vger.kernel.org> # v2026.05.17
Fixes: 7f162f5bcf50fc ("common/xfs: helper function to check if -l/-d/-r concurrecy flags.")
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
 common/xfs |    5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/common/xfs b/common/xfs
index 4b3a7f7d153282..88299acdd086be 100644
--- a/common/xfs
+++ b/common/xfs
@@ -2431,8 +2431,7 @@ _require_xfs_healer()
 # -l/-d concurrency came in same xfsprogs release v6.7
  _scratch_mkfs_xfs_supports_concurrency()
 {
-    local arg="${1:-d}"
+	local arg="${1:-d}"
 
-    test "$arg" = "-l" && arg="-d"
-    _scratch_mkfs_xfs_supported "$arg" concurrency=0
+	_scratch_mkfs_xfs_supported "$arg" concurrency=0
 }

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/2] xfs/21[67]: fix mkfs log concurrency detection
  2026-05-20 18:52 [PATCH 1/2] common/xfs: fix _scratch_mkfs_xfs_supports_concurrency Darrick J. Wong
@ 2026-05-20 19:01 ` Darrick J. Wong
  2026-05-25  5:46   ` Christoph Hellwig
  2026-05-29  9:43   ` Zorro Lang
  2026-05-25  5:43 ` [PATCH 1/2] common/xfs: fix _scratch_mkfs_xfs_supports_concurrency Christoph Hellwig
  1 sibling, 2 replies; 7+ messages in thread
From: Darrick J. Wong @ 2026-05-20 19:01 UTC (permalink / raw)
  To: Zorro Lang; +Cc: fstests, xfs

From: Darrick J. Wong <djwong@kernel.org>

Both of these tests use _scratch_mkfs_xfs_supports_concurrency to detect
if they should be adding -lconcurrency=0 to the mkfs options that are
used to format a loop device.

However, this doesn't work in practice because of three factors: 1) the
scratch device could have an external log set up; 2) the loop device
does /not/ have an external log device; and 3) -lconcurrency isn't
compatible with -llogdev.

Fix this by creating a more general mkfs option detection helper and use
that once we have the loop device set up.

Cc: <fstests@vger.kernel.org> # v2026.05.17
Fixes: ffc8bad17e5b2f ("xfs/21{6,7} Use default -l concurrency=0 on mkfs.xfs that supports it")
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
 common/xfs    |   15 +++++++++++++++
 tests/xfs/216 |    9 ++++-----
 tests/xfs/217 |    9 ++++-----
 3 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/common/xfs b/common/xfs
index 88299acdd086be..232d40fd5e01b1 100644
--- a/common/xfs
+++ b/common/xfs
@@ -64,6 +64,21 @@ _scratch_mkfs_xfs_opts()
 	echo "$MKFS_XFS_PROG $SCRATCH_OPTIONS $mkfs_opts"
 }
 
+_mkfs_xfs_supported()
+{
+	local mkfs_opts=$*
+
+	$MKFS_XFS_PROG -f -N $MKFS_OPTIONS $mkfs_opts
+	local mkfs_status=$?
+
+	# a mkfs failure may be caused by conflicts between $MKFS_OPTIONS and
+	# $mkfs_opts, try again without $MKFS_OPTIONS
+	if [ $mkfs_status -ne 0 -a -n "$mkfs_opts" ]; then
+		$MKFS_XFS_PROG -f -N $mkfs_opts
+		mkfs_status=$?
+	fi
+	return $mkfs_status
+}
 
 _scratch_mkfs_xfs_supported()
 {
diff --git a/tests/xfs/216 b/tests/xfs/216
index e3be9f3fe39ee0..bd98ee4dbfe960 100755
--- a/tests/xfs/216
+++ b/tests/xfs/216
@@ -22,11 +22,6 @@ _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
@@ -76,6 +71,10 @@ mkdir $LOOP_MNT
 
 loop_dev=$(_create_loop_device $LOOP_IMG)
 
+if _mkfs_xfs_supported $loop_mkfs_opts -l concurrency=0 $loop_dev &>> $seqres.full; then
+	loop_mkfs_opts="$loop_mkfs_opts -l concurrency=0"
+fi
+
 # walk over standard sizes (up to 256GB)
 _do_mkfs 1 2 4 8 16 32 64 128 256
 
diff --git a/tests/xfs/217 b/tests/xfs/217
index 5b210627b5ed18..5ba0b2198eb84f 100755
--- a/tests/xfs/217
+++ b/tests/xfs/217
@@ -21,11 +21,6 @@ _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
@@ -63,6 +58,10 @@ fi
 
 loop_dev=$(_create_loop_device $LOOP_IMG)
 
+if _mkfs_xfs_supported $loop_mkfs_opts -l concurrency=0 -d concurrency=0 $loop_dev &>> $seqres.full; then
+	loop_mkfs_opts="$loop_mkfs_opts -l concurrency=0 -d concurrency=0"
+fi
+
 #
 # walk over "new" sizes supported by recent xfsprogs.
 # Note that the last test is for 16TB-1GB as 32bit platforms only support

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] common/xfs: fix _scratch_mkfs_xfs_supports_concurrency
  2026-05-20 18:52 [PATCH 1/2] common/xfs: fix _scratch_mkfs_xfs_supports_concurrency Darrick J. Wong
  2026-05-20 19:01 ` [PATCH 2/2] xfs/21[67]: fix mkfs log concurrency detection Darrick J. Wong
@ 2026-05-25  5:43 ` Christoph Hellwig
  1 sibling, 0 replies; 7+ messages in thread
From: Christoph Hellwig @ 2026-05-25  5:43 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: Zorro Lang, fstests, xfs

Looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] xfs/21[67]: fix mkfs log concurrency detection
  2026-05-20 19:01 ` [PATCH 2/2] xfs/21[67]: fix mkfs log concurrency detection Darrick J. Wong
@ 2026-05-25  5:46   ` Christoph Hellwig
  2026-05-29  4:21     ` Darrick J. Wong
  2026-05-29  9:43   ` Zorro Lang
  1 sibling, 1 reply; 7+ messages in thread
From: Christoph Hellwig @ 2026-05-25  5:46 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: Zorro Lang, fstests, xfs

On Wed, May 20, 2026 at 12:01:12PM -0700, Darrick J. Wong wrote:
> +_mkfs_xfs_supported()

Can you add a top of function comment explaininging this helper?

> +{
> +	local mkfs_opts=$*
> +
> +	$MKFS_XFS_PROG -f -N $MKFS_OPTIONS $mkfs_opts
> +	local mkfs_status=$?
> +
> +	# a mkfs failure may be caused by conflicts between $MKFS_OPTIONS and
> +	# $mkfs_opts, try again without $MKFS_OPTIONS
> +	if [ $mkfs_status -ne 0 -a -n "$mkfs_opts" ]; then
> +		$MKFS_XFS_PROG -f -N $mkfs_opts
> +		mkfs_status=$?
> +	fi

Do we want this for a helper like this?  The automatic dropping of
options has been a major source of mess, and if we're using a helper
that checks to see if mkfs works, returning false and then _notrun()ing
would seem like the saner option in general.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] xfs/21[67]: fix mkfs log concurrency detection
  2026-05-25  5:46   ` Christoph Hellwig
@ 2026-05-29  4:21     ` Darrick J. Wong
  2026-05-29  5:45       ` Christoph Hellwig
  0 siblings, 1 reply; 7+ messages in thread
From: Darrick J. Wong @ 2026-05-29  4:21 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: Zorro Lang, fstests, xfs

On Sun, May 24, 2026 at 10:46:08PM -0700, Christoph Hellwig wrote:
> On Wed, May 20, 2026 at 12:01:12PM -0700, Darrick J. Wong wrote:
> > +_mkfs_xfs_supported()
> 
> Can you add a top of function comment explaininging this helper?

Done:

# Figure out if the supplied mkfs.xfs options are supported.  A device
# or file path must be specified as one of the options, though it will
# not be written.

> > +{
> > +	local mkfs_opts=$*
> > +
> > +	$MKFS_XFS_PROG -f -N $MKFS_OPTIONS $mkfs_opts
> > +	local mkfs_status=$?
> > +
> > +	# a mkfs failure may be caused by conflicts between $MKFS_OPTIONS and
> > +	# $mkfs_opts, try again without $MKFS_OPTIONS
> > +	if [ $mkfs_status -ne 0 -a -n "$mkfs_opts" ]; then
> > +		$MKFS_XFS_PROG -f -N $mkfs_opts
> > +		mkfs_status=$?
> > +	fi
> 
> Do we want this for a helper like this?  The automatic dropping of
> options has been a major source of mess, and if we're using a helper
> that checks to see if mkfs works, returning false and then _notrun()ing
> would seem like the saner option in general.

I copy-pasted it from the other helper, but now that I've written the
doc comment I agree with you that we should only determine if the
passed-in option set actually works.

Digression: I wonder if _scratch_mkfs_xfs_supported should have a
"-f" in its $XFS_MKFS_PROG invocations?

--D

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] xfs/21[67]: fix mkfs log concurrency detection
  2026-05-29  4:21     ` Darrick J. Wong
@ 2026-05-29  5:45       ` Christoph Hellwig
  0 siblings, 0 replies; 7+ messages in thread
From: Christoph Hellwig @ 2026-05-29  5:45 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: Christoph Hellwig, Zorro Lang, fstests, xfs

On Thu, May 28, 2026 at 09:21:31PM -0700, Darrick J. Wong wrote:
> On Sun, May 24, 2026 at 10:46:08PM -0700, Christoph Hellwig wrote:
> > On Wed, May 20, 2026 at 12:01:12PM -0700, Darrick J. Wong wrote:
> > > +_mkfs_xfs_supported()
> > 
> > Can you add a top of function comment explaininging this helper?
> 
> Done:
> 
> # Figure out if the supplied mkfs.xfs options are supported.  A device
> # or file path must be specified as one of the options, though it will
> # not be written.

Sounds good.

> Digression: I wonder if _scratch_mkfs_xfs_supported should have a
> "-f" in its $XFS_MKFS_PROG invocations?

Probably, otherwise if you run this when something else was on the
device it randomly fails.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] xfs/21[67]: fix mkfs log concurrency detection
  2026-05-20 19:01 ` [PATCH 2/2] xfs/21[67]: fix mkfs log concurrency detection Darrick J. Wong
  2026-05-25  5:46   ` Christoph Hellwig
@ 2026-05-29  9:43   ` Zorro Lang
  1 sibling, 0 replies; 7+ messages in thread
From: Zorro Lang @ 2026-05-29  9:43 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: fstests, xfs

On Wed, May 20, 2026 at 12:01:12PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
> 
> Both of these tests use _scratch_mkfs_xfs_supports_concurrency to detect
> if they should be adding -lconcurrency=0 to the mkfs options that are
> used to format a loop device.
> 
> However, this doesn't work in practice because of three factors: 1) the
> scratch device could have an external log set up; 2) the loop device
> does /not/ have an external log device; and 3) -lconcurrency isn't
> compatible with -llogdev.
> 
> Fix this by creating a more general mkfs option detection helper and use
> that once we have the loop device set up.
> 
> Cc: <fstests@vger.kernel.org> # v2026.05.17
> Fixes: ffc8bad17e5b2f ("xfs/21{6,7} Use default -l concurrency=0 on mkfs.xfs that supports it")
> Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
> ---
>  common/xfs    |   15 +++++++++++++++
>  tests/xfs/216 |    9 ++++-----
>  tests/xfs/217 |    9 ++++-----
>  3 files changed, 23 insertions(+), 10 deletions(-)
> 
> diff --git a/common/xfs b/common/xfs
> index 88299acdd086be..232d40fd5e01b1 100644
> --- a/common/xfs
> +++ b/common/xfs
> @@ -64,6 +64,21 @@ _scratch_mkfs_xfs_opts()
>  	echo "$MKFS_XFS_PROG $SCRATCH_OPTIONS $mkfs_opts"
>  }
>  
> +_mkfs_xfs_supported()
> +{
> +	local mkfs_opts=$*

While it seems mkfs.xfs doesn't currently receive arguments with spaces, or
using "$@" might be safer, e.g.

  local -a mkfs_opts=("$@")
  $MKFS_XFS_PROG -f -N $MKFS_OPTIONS "${mkfs_opts[@]}"

> +
> +	$MKFS_XFS_PROG -f -N $MKFS_OPTIONS $mkfs_opts
> +	local mkfs_status=$?
> +
> +	# a mkfs failure may be caused by conflicts between $MKFS_OPTIONS and
> +	# $mkfs_opts, try again without $MKFS_OPTIONS
> +	if [ $mkfs_status -ne 0 -a -n "$mkfs_opts" ]; then
> +		$MKFS_XFS_PROG -f -N $mkfs_opts
> +		mkfs_status=$?
> +	fi
> +	return $mkfs_status
> +}

Since we now have _mkfs_xfs_supported, should we call it inside
_scratch_mkfs_xfs_supported ?

Thanks,
Zorro

>  
>  _scratch_mkfs_xfs_supported()
>  {
> diff --git a/tests/xfs/216 b/tests/xfs/216
> index e3be9f3fe39ee0..bd98ee4dbfe960 100755
> --- a/tests/xfs/216
> +++ b/tests/xfs/216
> @@ -22,11 +22,6 @@ _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
> @@ -76,6 +71,10 @@ mkdir $LOOP_MNT
>  
>  loop_dev=$(_create_loop_device $LOOP_IMG)
>  
> +if _mkfs_xfs_supported $loop_mkfs_opts -l concurrency=0 $loop_dev &>> $seqres.full; then
> +	loop_mkfs_opts="$loop_mkfs_opts -l concurrency=0"
> +fi
> +
>  # walk over standard sizes (up to 256GB)
>  _do_mkfs 1 2 4 8 16 32 64 128 256
>  
> diff --git a/tests/xfs/217 b/tests/xfs/217
> index 5b210627b5ed18..5ba0b2198eb84f 100755
> --- a/tests/xfs/217
> +++ b/tests/xfs/217
> @@ -21,11 +21,6 @@ _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
> @@ -63,6 +58,10 @@ fi
>  
>  loop_dev=$(_create_loop_device $LOOP_IMG)
>  
> +if _mkfs_xfs_supported $loop_mkfs_opts -l concurrency=0 -d concurrency=0 $loop_dev &>> $seqres.full; then
> +	loop_mkfs_opts="$loop_mkfs_opts -l concurrency=0 -d concurrency=0"
> +fi
> +
>  #
>  # walk over "new" sizes supported by recent xfsprogs.
>  # Note that the last test is for 16TB-1GB as 32bit platforms only support

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-05-29  9:44 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-20 18:52 [PATCH 1/2] common/xfs: fix _scratch_mkfs_xfs_supports_concurrency Darrick J. Wong
2026-05-20 19:01 ` [PATCH 2/2] xfs/21[67]: fix mkfs log concurrency detection Darrick J. Wong
2026-05-25  5:46   ` Christoph Hellwig
2026-05-29  4:21     ` Darrick J. Wong
2026-05-29  5:45       ` Christoph Hellwig
2026-05-29  9:43   ` Zorro Lang
2026-05-25  5:43 ` [PATCH 1/2] common/xfs: fix _scratch_mkfs_xfs_supports_concurrency Christoph Hellwig

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.