diff mbox

common/rc: avoid mkfs option conflicts in _scratch_mkfs_xfs_supported

Message ID 1467697153-23189-1-git-send-email-eguan@redhat.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Eryu Guan July 5, 2016, 5:39 a.m. UTC
In recent mkfs.xfs updates in xfsprogs, commit 9090e187bc3e ("mkfs:
add respecification detection to generic parsing") added
re-specification detection to "-m" option, it causes several tests
_notrun if MKFS_OPTIONS has the same options as those being tested
in _scratch_mkfs_xfs_supported(), because they're specified multiple
times.

	MKFS_OPTIONS="-m crc=0" ./check xfs/001
	xfs/001 3s ... [not run] mkfs.xfs doesn't have crc feature

Fix it by creating XFS again without MKFS_OPTIONS in
_scratch_mkfs_xfs_supported(), in case there's conflict between
MKFS_OPTIONS and mkfs_opts, like what we do in _scratch_mkfs_xfs().

Signed-off-by: Eryu Guan <eguan@redhat.com>
---
 common/rc | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

Comments

Eryu Guan July 13, 2016, 9:06 a.m. UTC | #1
On Tue, Jul 05, 2016 at 01:39:13PM +0800, Eryu Guan wrote:
> In recent mkfs.xfs updates in xfsprogs, commit 9090e187bc3e ("mkfs:
> add respecification detection to generic parsing") added
> re-specification detection to "-m" option, it causes several tests
> _notrun if MKFS_OPTIONS has the same options as those being tested
> in _scratch_mkfs_xfs_supported(), because they're specified multiple
> times.
> 
> 	MKFS_OPTIONS="-m crc=0" ./check xfs/001
> 	xfs/001 3s ... [not run] mkfs.xfs doesn't have crc feature
> 
> Fix it by creating XFS again without MKFS_OPTIONS in
> _scratch_mkfs_xfs_supported(), in case there's conflict between
> MKFS_OPTIONS and mkfs_opts, like what we do in _scratch_mkfs_xfs().
> 
> Signed-off-by: Eryu Guan <eguan@redhat.com>

Ping on this.

My first attempt was removing $MKFS_OPTIONS from $MKFS_XFS_PROG command
line, but that broke xfs/186, this is the second attempt to fix this
issue.

Thanks,
Eryu

> ---
>  common/rc | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/common/rc b/common/rc
> index 883bd7b..ad81461 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -473,11 +473,20 @@ _scratch_mkfs_xfs_opts()
>  
>  _scratch_mkfs_xfs_supported()
>  {
> -	mkfs_opts=$*
> +	local mkfs_opts=$*
>  
>  	_scratch_options mkfs
>  
>  	$MKFS_XFS_PROG -N $MKFS_OPTIONS $SCRATCH_OPTIONS $mkfs_opts $SCRATCH_DEV
> +	local mkfs_status=$?
> +
> +	# if $mkfs_opts conflits with $MKFS_OPTIONS,
> +	# try again without $MKFS_OPTIONS
> +	if [ $mkfs_status -ne 0 -a -n "$MKFS_OPTIONS" ]; then
> +		$MKFS_XFS_PROG -N $SCRATCH_OPTIONS $mkfs_opts $SCRATCH_DEV
> +		mkfs_status=$?
> +	fi
> +	return $mkfs_status
>  }
>  
>  _scratch_mkfs_xfs()
> -- 
> 2.7.4
>
Dave Chinner July 15, 2016, 12:01 a.m. UTC | #2
On Tue, Jul 05, 2016 at 01:39:13PM +0800, Eryu Guan wrote:
> In recent mkfs.xfs updates in xfsprogs, commit 9090e187bc3e ("mkfs:
> add respecification detection to generic parsing") added
> re-specification detection to "-m" option, it causes several tests
> _notrun if MKFS_OPTIONS has the same options as those being tested
> in _scratch_mkfs_xfs_supported(), because they're specified multiple
> times.
> 
> 	MKFS_OPTIONS="-m crc=0" ./check xfs/001
> 	xfs/001 3s ... [not run] mkfs.xfs doesn't have crc feature
> 
> Fix it by creating XFS again without MKFS_OPTIONS in
> _scratch_mkfs_xfs_supported(), in case there's conflict between
> MKFS_OPTIONS and mkfs_opts, like what we do in _scratch_mkfs_xfs().
> 
> Signed-off-by: Eryu Guan <eguan@redhat.com>
> ---
>  common/rc | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/common/rc b/common/rc
> index 883bd7b..ad81461 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -473,11 +473,20 @@ _scratch_mkfs_xfs_opts()
>  
>  _scratch_mkfs_xfs_supported()
>  {
> -	mkfs_opts=$*
> +	local mkfs_opts=$*
>  
>  	_scratch_options mkfs
>  
>  	$MKFS_XFS_PROG -N $MKFS_OPTIONS $SCRATCH_OPTIONS $mkfs_opts $SCRATCH_DEV
> +	local mkfs_status=$?
> +
> +	# if $mkfs_opts conflits with $MKFS_OPTIONS,
> +	# try again without $MKFS_OPTIONS
> +	if [ $mkfs_status -ne 0 -a -n "$MKFS_OPTIONS" ]; then
> +		$MKFS_XFS_PROG -N $SCRATCH_OPTIONS $mkfs_opts $SCRATCH_DEV
> +		mkfs_status=$?
> +	fi
> +	return $mkfs_status
>  }


This should match what _scratch_mkfs_xfs does. i.e:

        # a mkfs failure may be caused by conflicts between
        # $MKFS_OPTIONS and $extra_mkfs_options
        if [ $mkfs_status -ne 0 -a ! -z "$extra_mkfs_options" ]; then
                (
                echo -n "** mkfs failed with extra mkfs options "
                echo "added to \"$MKFS_OPTIONS\" by test $seq **"
                echo -n "** attempting to mkfs using only test $seq "
                echo "options: $extra_mkfs_options **"
                ) >> $seqres.full

                # running mkfs again. overwrite previous mkfs output files
                _scratch_mkfs_xfs_opts $extra_mkfs_options \
                        2>$tmp_dir.mkfserr 1>$tmp_dir.mkfsstd
                local mkfs_status=$?
        fi

i.e. it checks if $extra_mkfs_options is not empty, rather than
$MKFS_OPTIONS

Cheers,

Dave.
Eryu Guan July 15, 2016, 4:06 a.m. UTC | #3
On Fri, Jul 15, 2016 at 10:01:29AM +1000, Dave Chinner wrote:
> On Tue, Jul 05, 2016 at 01:39:13PM +0800, Eryu Guan wrote:
> > In recent mkfs.xfs updates in xfsprogs, commit 9090e187bc3e ("mkfs:
> > add respecification detection to generic parsing") added
> > re-specification detection to "-m" option, it causes several tests
> > _notrun if MKFS_OPTIONS has the same options as those being tested
> > in _scratch_mkfs_xfs_supported(), because they're specified multiple
> > times.
> > 
> > 	MKFS_OPTIONS="-m crc=0" ./check xfs/001
> > 	xfs/001 3s ... [not run] mkfs.xfs doesn't have crc feature
> > 
> > Fix it by creating XFS again without MKFS_OPTIONS in
> > _scratch_mkfs_xfs_supported(), in case there's conflict between
> > MKFS_OPTIONS and mkfs_opts, like what we do in _scratch_mkfs_xfs().
> > 
> > Signed-off-by: Eryu Guan <eguan@redhat.com>
> > ---
> >  common/rc | 11 ++++++++++-
> >  1 file changed, 10 insertions(+), 1 deletion(-)
> > 
> > diff --git a/common/rc b/common/rc
> > index 883bd7b..ad81461 100644
> > --- a/common/rc
> > +++ b/common/rc
> > @@ -473,11 +473,20 @@ _scratch_mkfs_xfs_opts()
> >  
> >  _scratch_mkfs_xfs_supported()
> >  {
> > -	mkfs_opts=$*
> > +	local mkfs_opts=$*
> >  
> >  	_scratch_options mkfs
> >  
> >  	$MKFS_XFS_PROG -N $MKFS_OPTIONS $SCRATCH_OPTIONS $mkfs_opts $SCRATCH_DEV
> > +	local mkfs_status=$?
> > +
> > +	# if $mkfs_opts conflits with $MKFS_OPTIONS,
> > +	# try again without $MKFS_OPTIONS
> > +	if [ $mkfs_status -ne 0 -a -n "$MKFS_OPTIONS" ]; then
> > +		$MKFS_XFS_PROG -N $SCRATCH_OPTIONS $mkfs_opts $SCRATCH_DEV
> > +		mkfs_status=$?
> > +	fi
> > +	return $mkfs_status
> >  }
> 
> 
> This should match what _scratch_mkfs_xfs does. i.e:
> 
>         # a mkfs failure may be caused by conflicts between
>         # $MKFS_OPTIONS and $extra_mkfs_options
>         if [ $mkfs_status -ne 0 -a ! -z "$extra_mkfs_options" ]; then
>                 (
>                 echo -n "** mkfs failed with extra mkfs options "
>                 echo "added to \"$MKFS_OPTIONS\" by test $seq **"
>                 echo -n "** attempting to mkfs using only test $seq "
>                 echo "options: $extra_mkfs_options **"
>                 ) >> $seqres.full
> 
>                 # running mkfs again. overwrite previous mkfs output files
>                 _scratch_mkfs_xfs_opts $extra_mkfs_options \
>                         2>$tmp_dir.mkfserr 1>$tmp_dir.mkfsstd
>                 local mkfs_status=$?
>         fi
> 
> i.e. it checks if $extra_mkfs_options is not empty, rather than
> $MKFS_OPTIONS

Thanks for the review!

I thought about it too, but I realized that _scratch_mkfs_supported() is
supposed to have "$extra_mkfs_options" (always non-empty), because what
it tests is to check whether mkfs.xfs works well with these
"$extra_mkfs_options".

But making sure $mkfs_opts is not empty before using it makes more
sense, and it matches _scratch_mkfs_xfs(). I'll send v2 patch.

Thanks,
Eryu
diff mbox

Patch

diff --git a/common/rc b/common/rc
index 883bd7b..ad81461 100644
--- a/common/rc
+++ b/common/rc
@@ -473,11 +473,20 @@  _scratch_mkfs_xfs_opts()
 
 _scratch_mkfs_xfs_supported()
 {
-	mkfs_opts=$*
+	local mkfs_opts=$*
 
 	_scratch_options mkfs
 
 	$MKFS_XFS_PROG -N $MKFS_OPTIONS $SCRATCH_OPTIONS $mkfs_opts $SCRATCH_DEV
+	local mkfs_status=$?
+
+	# if $mkfs_opts conflits with $MKFS_OPTIONS,
+	# try again without $MKFS_OPTIONS
+	if [ $mkfs_status -ne 0 -a -n "$MKFS_OPTIONS" ]; then
+		$MKFS_XFS_PROG -N $SCRATCH_OPTIONS $mkfs_opts $SCRATCH_DEV
+		mkfs_status=$?
+	fi
+	return $mkfs_status
 }
 
 _scratch_mkfs_xfs()