Re: [PATCH v2 1/2] fstests: introduce MKFS_BCACHEFS_PROG for bcachefs

Brian Foster
2024-01-17T17:53:40Z

On Wed, Jan 17, 2024 at 05:23:08PM +0800, Su Yue wrote:
> mkfs.bcachefs supports force overwrite when option '-f' is given:
> $ mkfs.bcachefs --help | grep force
> -f, --force
>
> There are some tests which call _scratch_mkfs multiple times
> e.g. tests/generic/171. Without '-f' in MKFS_OPTIONS,
> these tests just hang in overwrite confirmation.
> After this commit, MKFS_BCACHEFS_PROG will contains ' -f' so
> we don't have to add '-f' to MKFS_OPTIONS manually to make
> these tests pass.
>
> It also fixes generic/466 which unsets MKFS_OPTIONS causing
> that test hangs in mfks.bcachefs waiting for confirmation of
> the force overwrite.
>
> Signed-off-by: Su Yue <glass.su@suse.com>
> ---
> changelog:
> v2:
> Add more details about why MKFS_BCACHEFS_PROG should contain '-f'.
> ---
> common/config | 3 ++-
> common/rc | 12 +++++++++---
> 2 files changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/common/config b/common/config
> index c9771ff934cb..1f9edceec57a 100644
> --- a/common/config
> +++ b/common/config
> @@ -105,7 +105,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
> echo "$p -f"
> else
> echo $p
> @@ -313,6 +313,7 @@ export MKFS_REISER4_PROG=$(type -P mkfs.reiser4)
> export E2FSCK_PROG=$(type -P e2fsck)
> export TUNE2FS_PROG=$(type -P tune2fs)
> export FSCK_OVERLAY_PROG=$(type -P fsck.overlay)
> +export MKFS_BCACHEFS_PROG=$(set_mkfs_prog_path_with_opts bcachefs)
>
> # SELinux adds extra xattrs which can mess up our expected output.
> # So, mount with a context, and they won't be created.
> diff --git a/common/rc b/common/rc
> index 524ffa02aa6a..31c21d2a8360 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -611,6 +611,9 @@ _test_mkfs()
> xfs)
> $MKFS_PROG -t $FSTYP -- -f $MKFS_OPTIONS $* $TEST_DEV
> ;;
> + bcachefs)
> + $MKFS_BCACHEFS_PROG $MKFS_OPTIONS $* $TEST_DEV > /dev/null

Whitespace looks off on this line, but I suppose the maintainer can fix
that up if desired. That aside this LGTM:

Reviewed-by: Brian Foster <bfoster@redhat.com>

> + ;;
> *)
> yes | $MKFS_PROG -t $FSTYP -- $MKFS_OPTIONS $* $TEST_DEV
> ;;
> @@ -753,6 +756,10 @@ _scratch_mkfs()
> mkfs_cmd="yes | $MKFS_PROG -t $FSTYP --"
> mkfs_filter="grep -v -e ^mkfs\.ocfs2"
> ;;
> + bcachefs)
> + mkfs_cmd="$MKFS_BCACHEFS_PROG"
> + mkfs_filter="cat"
> + ;;
> *)
> mkfs_cmd="yes | $MKFS_PROG -t $FSTYP --"
> mkfs_filter="cat"
> @@ -1044,7 +1051,7 @@ _scratch_mkfs_sized()
> export MOUNT_OPTIONS="-o size=$fssize $TMPFS_MOUNT_OPTIONS"
> ;;
> bcachefs)
> - $MKFS_PROG -t $FSTYP -- $MKFS_OPTIONS --fs_size=$fssize --block_size=$blocksize $SCRATCH_DEV
> + $MKFS_BCACHEFS_PROG $MKFS_OPTIONS --fs_size=$fssize --block_size=$blocksize $SCRATCH_DEV
> ;;
> *)
> _notrun "Filesystem $FSTYP not supported in _scratch_mkfs_sized"
> @@ -1128,8 +1135,7 @@ _scratch_mkfs_blocksized()
> -C $blocksize $SCRATCH_DEV
> ;;
> bcachefs)
> - ${MKFS_PROG} -t $FSTYP $MKFS_OPTIONS --block_size=$blocksize \
> - $SCRATCH_DEV
> + _scratch_mkfs --block_size=$blocksize
> ;;
> udf)
> _scratch_mkfs -b $blocksize
> --
> 2.43.0
>