Re: [PATCH] fstests: support new mkfs.btrfs help string

Zorro Lang <[email protected]>
Newsgroups org.kernel.vger.fstests,org.kernel.vger.linux-btrfs
Message-ID <agDVg6UXhP4DoKK_@zlang-mailbox>
On Sun, May 10, 2026 at 09:47:04AM +0930, Qu Wenruo wrote:
> [BUG]
> The latest btrfs-progs release v7.0 breaks a lot of tests, e.g.
> btrfs/003:
> 
> btrfs/003    55s ... [failed, exit status 1]- output mismatch (see /home/kts/kernel-test-suite/src/xfstests/results//btrfs/003.out.bad)
>     --- tests/btrfs/003.out     2026-05-09 03:07:52.952213772 +0900
>     +++ /home/kts/kernel-test-suite/src/xfstests/results//btrfs/003.out.bad     2026-05-09 23:32:17.595751435 +0900
>     @@ -1,2 +1,3 @@
>      QA output created by 003
>     -Silence is golden
>     +mkfs failed
>     +(see /home/kts/kernel-test-suite/src/xfstests/results//btrfs/003.full for details)
>     ...
>     (Run 'diff -u /home/kts/kernel-test-suite/src/xfstests/tests/btrfs/003.out /home/kts/kernel-test-suite/src/xfstests/results//btrfs/003.out.bad'  to see the entire diff)
> 
> [CAUSE]
> Commit ec8324cc4b8b ("btrfs-progs: help: adjust alignment of text") from
> btrfs-progs changed the helpe string output format, the previous help
> string for "-f" option of mkfs.btrfs looks like this:
> 
>     -f|--force                force overwrite of existing filesystem
> 
> There were 4 spaces before the "-f", thus can be matched by
> "[[:space:]]-f[[:space]|,]".
> 
> But now the help string looks like:
> 
> -f, --force               force overwrite of existing filesystem
> 
> Which removed the spaces at the beginning.
> 
> The existing regex to catch "-f" requires at least one space before
> "-f", now it doesn't match the new btrfs help string, and cause mkfs
> failure because we can not overwrite an existing scratch device without
> "-f" option.
> 
> [FIX]
> Change the regex to allow no space before "-f".
> 
> Reported-by: Shin'ichiro Kawasaki <[email protected]>
> Link: https://lore.kernel.org/linux-btrfs/af9EHC5b-aBdr1zn@shinmob/
> Signed-off-by: Qu Wenruo <[email protected]>
> ---
>  common/config | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/common/config b/common/config
> index 1420e35d..339f7767 100644
> --- a/common/config
> +++ b/common/config
> @@ -103,7 +103,7 @@ set_mkfs_prog_path_with_opts()
>  	# Note: mkfs.f2fs doesn't support the --help option yet, but it doesn't
>  	# matter since it also prints the help when an invalid option is given.
>  	if [ "$p" != "" ] && \
> -		$p --help |& grep -q "[[:space:]]-f[[:space:]|,]"; then
> +		$p --help |& grep -q "[[:space:]]*-f[[:space:]|,]"; then

Hi Qu,

This change looks good to me. But to be a bit nitpicky, the original
"[[:space:]]-f" required *a* mandatory [space] before the -f, whereas
"[[:space:]]*-f" allows for *zero* or more spaces. This changes the
semantics slightly, but it makes sense if you're trying to match cases
where -f appears at the very beginning of a line.

If that wasn't your intention or if you find this behavior unexpected, let me
know :) Otherwise, I'd like to:

Reviewed-by: Zorro Lang <[email protected]>

>  		echo "$p -f"
>  	else
>  		echo $p
> -- 
> 2.51.2
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.