All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] generic/071: require falloc -k
@ 2016-07-18  8:06 Christoph Hellwig
  2016-07-18  8:47 ` Eryu Guan
  0 siblings, 1 reply; 9+ messages in thread
From: Christoph Hellwig @ 2016-07-18  8:06 UTC (permalink / raw)
  To: fstests

NFSv4.2 supports fallocate, but not the FALLOC_FL_KEEP_SIZE option.
To avoid a spurious failure test for the correct command.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 tests/generic/071 | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/generic/071 b/tests/generic/071
index 65ed0c7..9d0d136 100755
--- a/tests/generic/071
+++ b/tests/generic/071
@@ -46,7 +46,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 _supported_fs generic
 _supported_os Linux
 _require_scratch
-_require_xfs_io_command "falloc"
+_require_xfs_io_command "falloc" "-k"
 
 rm -f $seqres.full
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] generic/071: require falloc -k
  2016-07-18  8:06 [PATCH] generic/071: require falloc -k Christoph Hellwig
@ 2016-07-18  8:47 ` Eryu Guan
  2016-07-19  4:17   ` Christoph Hellwig
  0 siblings, 1 reply; 9+ messages in thread
From: Eryu Guan @ 2016-07-18  8:47 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: fstests

On Mon, Jul 18, 2016 at 11:06:44AM +0300, Christoph Hellwig wrote:
> NFSv4.2 supports fallocate, but not the FALLOC_FL_KEEP_SIZE option.
> To avoid a spurious failure test for the correct command.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
>  tests/generic/071 | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tests/generic/071 b/tests/generic/071
> index 65ed0c7..9d0d136 100755
> --- a/tests/generic/071
> +++ b/tests/generic/071
> @@ -46,7 +46,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
>  _supported_fs generic
>  _supported_os Linux
>  _require_scratch
> -_require_xfs_io_command "falloc"
> +_require_xfs_io_command "falloc" "-k"

This stops generic/071 from running no matter what filesystem it's
testing, this is because _require_xfs_io_command only checks whether
xfs_io knows the option (-k) by searching it in help message, not really
running it, i.e.

xfs_io -c "help falloc" | grep -q "^ -k --"

but "help falloc" doesn't follow the normal xfs_io command help format

# xfs_io -c "help falloc"
falloc [-c] [-k] [-p] off len -- allocates space associated with part of a file via fallocate

So the check always returns false, and test always _notrun, with the
additional "-k" switch.

Perhaps we should update _require_xfs_io_command to actually run the
command with the provided additional option?

Thanks,
Eryu

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] generic/071: require falloc -k
  2016-07-18  8:47 ` Eryu Guan
@ 2016-07-19  4:17   ` Christoph Hellwig
  2016-07-19  6:49     ` Eric Sandeen
  0 siblings, 1 reply; 9+ messages in thread
From: Christoph Hellwig @ 2016-07-19  4:17 UTC (permalink / raw)
  To: Eryu Guan; +Cc: Christoph Hellwig, fstests

On Mon, Jul 18, 2016 at 04:47:14PM +0800, Eryu Guan wrote:
> This stops generic/071 from running no matter what filesystem it's
> testing, this is because _require_xfs_io_command only checks whether
> xfs_io knows the option (-k) by searching it in help message, not really
> running it, i.e.

Well, we can at least add the documentation as that would be useful
on it's own.  I'll look into a patch.

> Perhaps we should update _require_xfs_io_command to actually run the
> command with the provided additional option?

I'll have to look at the archives, but I remember we had a reason for
this way of probing for feature support.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] generic/071: require falloc -k
  2016-07-19  4:17   ` Christoph Hellwig
@ 2016-07-19  6:49     ` Eric Sandeen
  2016-07-19  8:30       ` Christoph Hellwig
  2016-07-20  4:38       ` Eryu Guan
  0 siblings, 2 replies; 9+ messages in thread
From: Eric Sandeen @ 2016-07-19  6:49 UTC (permalink / raw)
  To: Christoph Hellwig, Eryu Guan; +Cc: fstests



On 7/18/16 9:17 PM, Christoph Hellwig wrote:
> On Mon, Jul 18, 2016 at 04:47:14PM +0800, Eryu Guan wrote:
>> This stops generic/071 from running no matter what filesystem it's
>> testing, this is because _require_xfs_io_command only checks whether
>> xfs_io knows the option (-k) by searching it in help message, not really
>> running it, i.e.
> 
> Well, we can at least add the documentation as that would be useful
> on it's own.  I'll look into a patch.
> 
>> Perhaps we should update _require_xfs_io_command to actually run the
>> command with the provided additional option?
> 
> I'll have to look at the archives, but I remember we had a reason for
> this way of probing for feature support.

Some tests actually do run xfs_io on a real file, but we probably
don't want to go that way.

The test for finding it in help output seems way too specific,

_require_xfs_io_command "pwrite" "-Z"

fails as well because it doesn't hit the specific format in
the grep.

What if we loosen up the test; is this too loose? (look for param
preceded by whitespace or square bracket)

diff --git a/common/rc b/common/rc
index 6add69e..0eef3d5 100644
--- a/common/rc
+++ b/common/rc
@@ -1907,7 +1907,7 @@ _require_xfs_io_command()
 		_notrun "xfs_io $command failed (old kernel/wrong fs?)"
 
 	test -z "$param" && return
-	$XFS_IO_PROG -c "help $command" | grep -q "^ $param --" || \
+	$XFS_IO_PROG -c "help $command" | egrep -qw "[ \[]$param" || \
 		_notrun "xfs_io $command doesn't support $param"
 }
 

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] generic/071: require falloc -k
  2016-07-19  6:49     ` Eric Sandeen
@ 2016-07-19  8:30       ` Christoph Hellwig
  2016-07-20  4:52         ` Eryu Guan
  2016-07-20  4:38       ` Eryu Guan
  1 sibling, 1 reply; 9+ messages in thread
From: Christoph Hellwig @ 2016-07-19  8:30 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: Christoph Hellwig, Eryu Guan, fstests

On Mon, Jul 18, 2016 at 11:49:57PM -0700, Eric Sandeen wrote:
> Some tests actually do run xfs_io on a real file, but we probably
> don't want to go that way.
> 
> The test for finding it in help output seems way too specific,
> 
> _require_xfs_io_command "pwrite" "-Z"
> 
> fails as well because it doesn't hit the specific format in
> the grep.
> 
> What if we loosen up the test; is this too loose? (look for param
> preceded by whitespace or square bracket)

Seems like it's not loose enough as it still tries to run the test
on NFS.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] generic/071: require falloc -k
  2016-07-19  6:49     ` Eric Sandeen
  2016-07-19  8:30       ` Christoph Hellwig
@ 2016-07-20  4:38       ` Eryu Guan
  1 sibling, 0 replies; 9+ messages in thread
From: Eryu Guan @ 2016-07-20  4:38 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: Christoph Hellwig, fstests

On Mon, Jul 18, 2016 at 11:49:57PM -0700, Eric Sandeen wrote:
> 
> 
> On 7/18/16 9:17 PM, Christoph Hellwig wrote:
> > On Mon, Jul 18, 2016 at 04:47:14PM +0800, Eryu Guan wrote:
> >> This stops generic/071 from running no matter what filesystem it's
> >> testing, this is because _require_xfs_io_command only checks whether
> >> xfs_io knows the option (-k) by searching it in help message, not really
> >> running it, i.e.
> > 
> > Well, we can at least add the documentation as that would be useful
> > on it's own.  I'll look into a patch.
> > 
> >> Perhaps we should update _require_xfs_io_command to actually run the
> >> command with the provided additional option?
> > 
> > I'll have to look at the archives, but I remember we had a reason for
> > this way of probing for feature support.
> 
> Some tests actually do run xfs_io on a real file, but we probably
> don't want to go that way.
> 
> The test for finding it in help output seems way too specific,
> 
> _require_xfs_io_command "pwrite" "-Z"
> 
> fails as well because it doesn't hit the specific format in
> the grep.

Zorro's commit a6f6e594f74a ("common/rc: teach _require_xfs_io_command
accept multi-parameters") addressed this issue, but it requires
something like "_require_xfs_io_command pwrite -Z N" to match the help
message.

> 
> What if we loosen up the test; is this too loose? (look for param
> preceded by whitespace or square bracket)
> 
> diff --git a/common/rc b/common/rc
> index 6add69e..0eef3d5 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -1907,7 +1907,7 @@ _require_xfs_io_command()
>  		_notrun "xfs_io $command failed (old kernel/wrong fs?)"
>  
>  	test -z "$param" && return
> -	$XFS_IO_PROG -c "help $command" | grep -q "^ $param --" || \
> +	$XFS_IO_PROG -c "help $command" | egrep -qw "[ \[]$param" || \
>  		_notrun "xfs_io $command doesn't support $param"
>  }

This looks better to me, at least better than current code :)

Thanks,
Eryu

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] generic/071: require falloc -k
  2016-07-19  8:30       ` Christoph Hellwig
@ 2016-07-20  4:52         ` Eryu Guan
  2016-07-20  5:34           ` Eric Sandeen
  0 siblings, 1 reply; 9+ messages in thread
From: Eryu Guan @ 2016-07-20  4:52 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: Eric Sandeen, fstests

On Tue, Jul 19, 2016 at 10:30:47AM +0200, Christoph Hellwig wrote:
> On Mon, Jul 18, 2016 at 11:49:57PM -0700, Eric Sandeen wrote:
> > Some tests actually do run xfs_io on a real file, but we probably
> > don't want to go that way.
> > 
> > The test for finding it in help output seems way too specific,
> > 
> > _require_xfs_io_command "pwrite" "-Z"
> > 
> > fails as well because it doesn't hit the specific format in
> > the grep.
> > 
> > What if we loosen up the test; is this too loose? (look for param
> > preceded by whitespace or square bracket)
> 
> Seems like it's not loose enough as it still tries to run the test
> on NFS.

For this NFSv4.2 case, I think we have to actually run "falloc -k" to
check whether the underlying fs supports (FALLOC_FL_KEEP_SIZE) or not.

Current check in _require_xfs_io_command only checks whether xfs_io
knows the given option, not the underlying fs. And in this NFSv4.2 case,
NFSv4.2 supports fallocate(2), and xfs_io falloc command knows "-k"
option, so test runs on NFS.

Thanks,
Eryu

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] generic/071: require falloc -k
  2016-07-20  4:52         ` Eryu Guan
@ 2016-07-20  5:34           ` Eric Sandeen
  2016-07-20 12:40             ` Eryu Guan
  0 siblings, 1 reply; 9+ messages in thread
From: Eric Sandeen @ 2016-07-20  5:34 UTC (permalink / raw)
  To: Eryu Guan, Christoph Hellwig; +Cc: fstests



On 7/19/16 9:52 PM, Eryu Guan wrote:
> On Tue, Jul 19, 2016 at 10:30:47AM +0200, Christoph Hellwig wrote:
>> On Mon, Jul 18, 2016 at 11:49:57PM -0700, Eric Sandeen wrote:
>>> Some tests actually do run xfs_io on a real file, but we probably
>>> don't want to go that way.
>>>
>>> The test for finding it in help output seems way too specific,
>>>
>>> _require_xfs_io_command "pwrite" "-Z"
>>>
>>> fails as well because it doesn't hit the specific format in
>>> the grep.
>>>
>>> What if we loosen up the test; is this too loose? (look for param
>>> preceded by whitespace or square bracket)
>>
>> Seems like it's not loose enough as it still tries to run the test
>> on NFS.
> 
> For this NFSv4.2 case, I think we have to actually run "falloc -k" to
> check whether the underlying fs supports (FALLOC_FL_KEEP_SIZE) or not.
> 
> Current check in _require_xfs_io_command only checks whether xfs_io
> knows the given option, not the underlying fs. And in this NFSv4.2 case,
> NFSv4.2 supports fallocate(2), and xfs_io falloc command knows "-k"
> option, so test runs on NFS.

Oh right, sorry.  So, this?

diff --git a/common/rc b/common/rc
index 6add69e..f087813 100644
--- a/common/rc
+++ b/common/rc
@@ -1880,7 +1880,7 @@ _require_xfs_io_command()
 	testfile=$TEST_DIR/$$.xfs_io
 	case $command in
 	"falloc" )
-		testio=`$XFS_IO_PROG -F -f -c "falloc 0 1m" $testfile 2>&1`
+		testio=`$XFS_IO_PROG -F -f -c "falloc $param 0 1m" $testfile 2>&1`
 		;;
 	"fpunch" | "fcollapse" | "zero" | "fzero" | "finsert" )
 		testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \

-Eric

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] generic/071: require falloc -k
  2016-07-20  5:34           ` Eric Sandeen
@ 2016-07-20 12:40             ` Eryu Guan
  0 siblings, 0 replies; 9+ messages in thread
From: Eryu Guan @ 2016-07-20 12:40 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: Christoph Hellwig, fstests

On Tue, Jul 19, 2016 at 10:34:43PM -0700, Eric Sandeen wrote:
> 
> 
> On 7/19/16 9:52 PM, Eryu Guan wrote:
> > On Tue, Jul 19, 2016 at 10:30:47AM +0200, Christoph Hellwig wrote:
> >> On Mon, Jul 18, 2016 at 11:49:57PM -0700, Eric Sandeen wrote:
> >>> Some tests actually do run xfs_io on a real file, but we probably
> >>> don't want to go that way.
> >>>
> >>> The test for finding it in help output seems way too specific,
> >>>
> >>> _require_xfs_io_command "pwrite" "-Z"
> >>>
> >>> fails as well because it doesn't hit the specific format in
> >>> the grep.
> >>>
> >>> What if we loosen up the test; is this too loose? (look for param
> >>> preceded by whitespace or square bracket)
> >>
> >> Seems like it's not loose enough as it still tries to run the test
> >> on NFS.
> > 
> > For this NFSv4.2 case, I think we have to actually run "falloc -k" to
> > check whether the underlying fs supports (FALLOC_FL_KEEP_SIZE) or not.
> > 
> > Current check in _require_xfs_io_command only checks whether xfs_io
> > knows the given option, not the underlying fs. And in this NFSv4.2 case,
> > NFSv4.2 supports fallocate(2), and xfs_io falloc command knows "-k"
> > option, so test runs on NFS.
> 
> Oh right, sorry.  So, this?
> 
> diff --git a/common/rc b/common/rc
> index 6add69e..f087813 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -1880,7 +1880,7 @@ _require_xfs_io_command()
>  	testfile=$TEST_DIR/$$.xfs_io
>  	case $command in
>  	"falloc" )
> -		testio=`$XFS_IO_PROG -F -f -c "falloc 0 1m" $testfile 2>&1`
> +		testio=`$XFS_IO_PROG -F -f -c "falloc $param 0 1m" $testfile 2>&1`
>  		;;
>  	"fpunch" | "fcollapse" | "zero" | "fzero" | "finsert" )
>  		testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \

Yes, this works, along with your first update. Or further more, we can
set param="" in the "falloc" case after actually running it? Since we've
already tested the option, no need to check the help message again.

Thanks,
Eryu

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-07-20 12:40 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-18  8:06 [PATCH] generic/071: require falloc -k Christoph Hellwig
2016-07-18  8:47 ` Eryu Guan
2016-07-19  4:17   ` Christoph Hellwig
2016-07-19  6:49     ` Eric Sandeen
2016-07-19  8:30       ` Christoph Hellwig
2016-07-20  4:52         ` Eryu Guan
2016-07-20  5:34           ` Eric Sandeen
2016-07-20 12:40             ` Eryu Guan
2016-07-20  4:38       ` Eryu Guan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.