diff mbox series

fstests: introduce MKFS_BCACHEFS_PROG for bcachefs

Message ID 20240114044120.140111-1-glass.su@suse.com (mailing list archive)
State New, archived
Headers show
Series fstests: introduce MKFS_BCACHEFS_PROG for bcachefs | expand

Commit Message

Su Yue Jan. 14, 2024, 4:41 a.m. UTC
mkfs.bcachefs supports force overwrite when option '-f' is given:
$ mkfs.bcachefs --help | grep force
  -f, --force
After this commit, MKFS_BCACHEFS_PROG will contains ' -f' so
we don't have to add '-f' to $MKFS_OPTIONS manually.

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>
---
 common/config |  3 ++-
 common/rc     | 12 +++++++++---
 2 files changed, 11 insertions(+), 4 deletions(-)

Comments

Brian Foster Jan. 16, 2024, 1:37 p.m. UTC | #1
On Sun, Jan 14, 2024 at 12:41:20PM +0800, Su Yue wrote:
> mkfs.bcachefs supports force overwrite when option '-f' is given:
> $ mkfs.bcachefs --help | grep force
>   -f, --force
> After this commit, MKFS_BCACHEFS_PROG will contains ' -f' so
> we don't have to add '-f' to $MKFS_OPTIONS manually.
> 
> It also fixes generic/466 which unsets MKFS_OPTIONS causing
> that test hangs in mfks.bcachefs waiting for confirmation of
> the force overwrite.
> 

This seems mostly reasonable to me, but I'm kind of wondering why I
haven't had to add -f to my MKFS_OPTIONS for bcachefs. Is there
something unique to the test environment that affects this? I.e., I
don't see any issue with generic/466 on a recent Fedora, even if I
pre-format the scratch dev with XFS.

> Signed-off-by: Su Yue <glass.su@suse.com>
> ---
>  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 cc92fe0681d6..f2e900bf1166 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
> +	;;
>      *)
>  	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

Should this function have another bcachefs check at the top to set
def_blksize in the case the config specifies a blocksize to use?

Brian

>  		;;
>  	*)
>  		_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
> 
>
Su Yue Jan. 16, 2024, 3:20 p.m. UTC | #2
On Tue 16 Jan 2024 at 08:37, Brian Foster <bfoster@redhat.com> 
wrote:

> On Sun, Jan 14, 2024 at 12:41:20PM +0800, Su Yue wrote:
>> mkfs.bcachefs supports force overwrite when option '-f' is 
>> given:
>> $ mkfs.bcachefs --help | grep force
>>   -f, --force
>> After this commit, MKFS_BCACHEFS_PROG will contains ' -f' so
>> we don't have to add '-f' to $MKFS_OPTIONS manually.
>>
>> It also fixes generic/466 which unsets MKFS_OPTIONS causing
>> that test hangs in mfks.bcachefs waiting for confirmation of
>> the force overwrite.
>>
>
> This seems mostly reasonable to me, but I'm kind of wondering 
> why I
> haven't had to add -f to my MKFS_OPTIONS for bcachefs. Is there
> something unique to the test environment that affects this? 
> I.e., I
> don't see any issue with generic/466 on a recent Fedora, even if 
> I
> pre-format the scratch dev with XFS.
>
My bad. Something wrong happend during my test process and caused
incorrect memory. fstests call wipefs to erase scratch dev first.
I will remove the descirption about the
'have to add '-f' to $MKFS_OPTIONS in next version.
>
>> Signed-off-by: Su Yue <glass.su@suse.com>
>> ---
>>  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 cc92fe0681d6..f2e900bf1166 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
>> +	;;
>>      *)
>>  	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
>
> Should this function have another bcachefs check at the top to 
> set
> def_blksize in the case the config specifies a blocksize to use?
>
Yeah. Will add it.

> Brian
>
>>  		;;
>>  	*)
>>  		_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
>>
>>
Kent Overstreet Jan. 16, 2024, 5:07 p.m. UTC | #3
On Tue, Jan 16, 2024 at 08:37:21AM -0500, Brian Foster wrote:
> On Sun, Jan 14, 2024 at 12:41:20PM +0800, Su Yue wrote:
> > mkfs.bcachefs supports force overwrite when option '-f' is given:
> > $ mkfs.bcachefs --help | grep force
> >   -f, --force
> > After this commit, MKFS_BCACHEFS_PROG will contains ' -f' so
> > we don't have to add '-f' to $MKFS_OPTIONS manually.
> > 
> > It also fixes generic/466 which unsets MKFS_OPTIONS causing
> > that test hangs in mfks.bcachefs waiting for confirmation of
> > the force overwrite.
> > 
> 
> This seems mostly reasonable to me, but I'm kind of wondering why I
> haven't had to add -f to my MKFS_OPTIONS for bcachefs. Is there
> something unique to the test environment that affects this? I.e., I
> don't see any issue with generic/466 on a recent Fedora, even if I
> pre-format the scratch dev with XFS.

I think there's still multiple screwy things going on with blkid probing
and superblock wiping - I've been noticing that there's a bunch of ktest
tests that don't specify -f and work fine in the CI, but that fail when
I loop them locally.

It appears wipefs only zeroes out the magic number on our first
superblock - but it leaves the layout intact before the first
superblock, so we're still able to find our backup superblocks.
Su Yue Jan. 17, 2024, 2:46 a.m. UTC | #4
On Tue 16 Jan 2024 at 08:37, Brian Foster <bfoster@redhat.com> 
wrote:

> On Sun, Jan 14, 2024 at 12:41:20PM +0800, Su Yue wrote:
>> mkfs.bcachefs supports force overwrite when option '-f' is 
>> given:
>> $ mkfs.bcachefs --help | grep force
>>   -f, --force
>> After this commit, MKFS_BCACHEFS_PROG will contains ' -f' so
>> we don't have to add '-f' to $MKFS_OPTIONS manually.
>>
>> It also fixes generic/466 which unsets MKFS_OPTIONS causing
>> that test hangs in mfks.bcachefs waiting for confirmation of
>> the force overwrite.
>>
>
> This seems mostly reasonable to me, but I'm kind of wondering 
> why I
> haven't had to add -f to my MKFS_OPTIONS for bcachefs. Is there
> something unique to the test environment that affects this? 
> I.e., I
> don't see any issue with generic/466 on a recent Fedora, even if 
> I
> pre-format the scratch dev with XFS.
>

I was running tests of group auto. There are some tests which
call _scratch_mkfs multiple times e.g. tests/generic/171.
Without '-f' in MKFS_OPTIONS, thoese tests hangs.
I will make it clearer in commit message.


--
Su
>> Signed-off-by: Su Yue <glass.su@suse.com>
>> ---
>>  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 cc92fe0681d6..f2e900bf1166 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
>> +	;;
>>      *)
>>  	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
>
> Should this function have another bcachefs check at the top to 
> set
> def_blksize in the case the config specifies a blocksize to use?
>
> Brian
>
>>  		;;
>>  	*)
>>  		_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
>>
>>
diff mbox series

Patch

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 cc92fe0681d6..f2e900bf1166 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
+	;;
     *)
 	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