FS/XFS testing framework
 help / color / mirror / Atom feed
From: "Lukáš Czerner" <lczerner@redhat.com>
To: Zhaolei <zhaolei@cn.fujitsu.com>
Cc: fstests@vger.kernel.org
Subject: Re: [PATCH v3 2/2] Fix warning of "Usage: _is_block_dev dev"
Date: Thu, 26 Feb 2015 12:29:35 +0100 (CET)	[thread overview]
Message-ID: <alpine.LFD.2.00.1502261223250.25704@localhost.localdomain> (raw)
In-Reply-To: <477b0e94819bea20d920822f0b88099ce19532a8.1424946979.git.zhaolei@cn.fujitsu.com>

On Thu, 26 Feb 2015, Zhaolei wrote:

> Date: Thu, 26 Feb 2015 18:38:59 +0800
> From: Zhaolei <zhaolei@cn.fujitsu.com>
> To: fstests@vger.kernel.org
> Cc: Zhao Lei <zhaolei@cn.fujitsu.com>
> Subject: [PATCH v3 2/2] Fix warning of "Usage: _is_block_dev dev"
> 
> From: Zhao Lei <zhaolei@cn.fujitsu.com>
> 
> _is_block_dev() will show above warning when "$dev" is not exist.
> It happened when the program check $TEST_DEV with blank $SCRATCH_DEV
> which is optional.
> 
> Changelog v2->v3:
>  Separate __same_block_dev() from _is_block_dev() to make code
>  self documenting.
>  Suggested by: Dave Chinner <david@fromorbit.com>
> 
> Changelog v1->v2:
>  Rewrite _is_block_dev() to make caller code simple.
>  Suggested by: Dave Chinner <david@fromorbit.com>

This is all very confusing. Sometimes you consider links, sometimes
you do not. Error messages are missing completely _is_block_dev()
does not return device numbers anymore which might be useful.

What about just using the original _is_block_dev() as it was
intended ? Like this:

	if [ "`_is_block_dev "$SCRATCH_DEV"`" = "`_is_block_dev "$TEST_DEV"`" ]

Simply use quotes around the function argument so that the function
always receives an argument even though it might be empty, but in
this case you'll not get the error message and the _is_block_dev()
will just return nothing - problem solved ?

-Lukas


> 
> Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
> ---
>  common/rc | 101 +++++++++++++++++++++++++++++++++++++-------------------------
>  1 file changed, 61 insertions(+), 40 deletions(-)
> 
> diff --git a/common/rc b/common/rc
> index 5a8c74d..f528c25 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -945,24 +945,51 @@ _fs_options()
>      ' </proc/mounts
>  }
>  
> -# returns device number if a file is a block device
> +# Returns:
> +# 0: if filename is a block device
> +# 1: if filename is not a block device
> +# -1 if argument wrong
>  #
>  _is_block_dev()
>  {
> -    if [ $# -ne 1 ]
> -    then
> -	echo "Usage: _is_block_dev dev" 1>&2
> -	exit 1
> -    fi
> +	if [ $# -ne 1 ]; then
> +		return -1
> +	fi
> +	if [ -b "$1" ]; then
> +		return 0
> +	fi
> +	return 1;
> +}
>  
> -    _dev=$1
> -    if [ -L "${_dev}" ]; then
> -        _dev=`readlink -f ${_dev}`
> -    fi
> +# Returns:
> +# 0: if the devices are same
> +# 1: if the devices are not same
> +#
> +__same_block_dev()
> +{
> +	if [ $# -ne 2 ]; then
> +		return 1
> +	fi
>  
> -    if [ -b "${_dev}" ]; then
> -        src/lstat64 ${_dev} | $AWK_PROG '/Device type:/ { print $9 }'
> -    fi
> +	_dev1="$1"
> +	_dev2="$2"
> +
> +	if [ ! -b "$_dev1" -o ! -b "$_dev2" ]; then
> +		return 1
> +	fi
> +
> +	if [ -L "${_dev1}" ]; then
> +		_dev1=`readlink -f "$_dev1"`
> +	fi
> +	if [ -L "${_dev2}" ]; then
> +		_dev2=`readlink -f "$_dev2"`
> +	fi
> +
> +	if [ `stat -c %t,%T "$_dev1"` != `stat -c %t,%T "$_dev2"` ]; then
> +		return 1
> +	fi
> +
> +	return 0;
>  }
>  
>  # Do a command, log it to $seqres.full, optionally test return status
> @@ -1095,19 +1122,16 @@ _require_scratch_nocheck()
>  		fi
>  		;;
>  	*)
> -		 if [ -z "$SCRATCH_DEV" -o "`_is_block_dev $SCRATCH_DEV`" = "" ]
> -		 then
> -		     _notrun "this test requires a valid \$SCRATCH_DEV"
> -		 fi
> -		 if [ "`_is_block_dev $SCRATCH_DEV`" = "`_is_block_dev $TEST_DEV`" ]
> -		 then
> -		     _notrun "this test requires a valid \$SCRATCH_DEV"
> -		 fi
> -		if [ ! -d "$SCRATCH_MNT" ]
> -		then
> -		     _notrun "this test requires a valid \$SCRATCH_MNT"
> +		if ! _is_block_dev "$SCRATCH_DEV"; then
> +			_notrun "this test requires a valid \$SCRATCH_DEV"
> +		fi
> +		if __same_block_dev "$SCRATCH_DEV" "$TEST_DEV"; then
> +			_notrun "\$SCRATCH_DEV and \$TEST_DEV are same device"
> +		fi
> +		if [ ! -d "$SCRATCH_MNT" ]; then
> +			_notrun "this test requires a valid \$SCRATCH_MNT"
>  		fi
> -		 ;;
> +		;;
>      esac
>  
>      # mounted?
> @@ -1167,19 +1191,16 @@ _require_test()
>  		fi
>  		;;
>  	*)
> -		 if [ -z "$TEST_DEV" -o "`_is_block_dev $TEST_DEV`" = "" ]
> -		 then
> -		     _notrun "this test requires a valid \$TEST_DEV"
> -		 fi
> -		 if [ "`_is_block_dev $SCRATCH_DEV`" = "`_is_block_dev $TEST_DEV`" ]
> -		 then
> -		     _notrun "this test requires a valid \$TEST_DEV"
> -		 fi
> -		if [ ! -d "$TEST_DIR" ]
> -		then
> -		     _notrun "this test requires a valid \$TEST_DIR"
> +		if ! _is_block_dev "$TEST_DEV"; then
> +			_notrun "this test requires a valid \$TEST_DEV"
> +		fi
> +		if __same_block_dev "$TEST_DEV" "$SCRATCH_DEV"; then
> +			_notrun "\$TEST_DEV and \$SCRATCH_DEV are same device"
>  		fi
> -		 ;;
> +		if [ ! -d "$TEST_DIR" ]; then
> +			_notrun "this test requires a valid \$TEST_DIR"
> +		fi
> +		;;
>      esac
>  
>      # mounted?
> @@ -1288,7 +1309,7 @@ _require_block_device()
>  		echo "Usage: _require_block_device <dev>" 1>&2
>  		exit 1
>  	fi
> -	if [ "`_is_block_dev $1`" == "" ]; then
> +	if ! _is_block_dev "$1"; then
>  		_notrun "require $1 to be valid block disk"
>  	fi
>  }
> @@ -2236,10 +2257,10 @@ _require_scratch_dev_pool()
>  	esac
>  
>  	for i in $SCRATCH_DEV_POOL; do
> -		if [ "`_is_block_dev $i`" = "" ]; then
> +		if ! _is_block_dev "$i"; then
>  			_notrun "this test requires valid block disk $i"
>  		fi
> -		if [ "`_is_block_dev $i`" = "`_is_block_dev $TEST_DEV`" ]; then
> +		if __same_block_dev "$i" "$TEST_DEV"; then
>  			_notrun "$i is part of TEST_DEV, this test requires unique disks"
>  		fi
>  		if _mount | grep -q $i; then
> 

  reply	other threads:[~2015-02-26 11:30 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-26 10:38 [PATCH v2 1/2] xfstests: fix a typo in _require_block_device() Zhaolei
2015-02-26 10:38 ` [PATCH v3 2/2] Fix warning of "Usage: _is_block_dev dev" Zhaolei
2015-02-26 11:29   ` Lukáš Czerner [this message]
2015-02-26 12:26     ` Zhao Lei
2015-02-26 13:36       ` Lukáš Czerner
2015-02-27  1:51         ` Zhao Lei
2015-02-27  9:45           ` Lukáš Czerner
2015-02-26 10:45 ` [PATCH v2 1/2] xfstests: fix a typo in _require_block_device() Lukáš Czerner
2015-02-26 13:38   ` Lukáš Czerner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.LFD.2.00.1502261223250.25704@localhost.localdomain \
    --to=lczerner@redhat.com \
    --cc=fstests@vger.kernel.org \
    --cc=zhaolei@cn.fujitsu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox