diff mbox

[v2,1/3] xfs/realtime: Add require_no_realtime function

Message ID 20170925195625.756877-1-rwareing@fb.com (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Richard Wareing Sept. 25, 2017, 7:56 p.m. UTC
Some tests do not play well with realtime devices, in an effort to
produce a stable set of test which exercise the realtime code paths
we introduce a _require_no_realtime function to allow tests to opt
out of realtime subvolume test runs.

Signed-off-by: Richard Wareing <rwareing@fb.com>
---
Changes since v1:
* None

 common/rc                      | 8 ++++++++
 tests/generic/409              | 1 +
 tests/generic/410              | 1 +
 tests/generic/411              | 1 +
 tests/xfs/077                  | 1 +
 tests/xfs/189                  | 1 +
 tests/xfs/191-input-validation | 1 +
 tests/xfs/202                  | 1 +
 tests/xfs/284                  | 1 +
 9 files changed, 16 insertions(+)

Comments

Darrick J. Wong Sept. 25, 2017, 9:38 p.m. UTC | #1
On Mon, Sep 25, 2017 at 12:56:23PM -0700, Richard Wareing wrote:
> Some tests do not play well with realtime devices, in an effort to
> produce a stable set of test which exercise the realtime code paths
> we introduce a _require_no_realtime function to allow tests to opt
> out of realtime subvolume test runs.
> 
> Signed-off-by: Richard Wareing <rwareing@fb.com>
> ---
> Changes since v1:
> * None
> 
>  common/rc                      | 8 ++++++++
>  tests/generic/409              | 1 +
>  tests/generic/410              | 1 +

Why don't shared subtree tests work w/ rt?

>  tests/generic/411              | 1 +

Some sort of mount regression?

>  tests/xfs/077                  | 1 +
>  tests/xfs/189                  | 1 +
>  tests/xfs/191-input-validation | 1 +
>  tests/xfs/202                  | 1 +
>  tests/xfs/284                  | 1 +

This test checks that xfsprogs don't run on a mounted fs.  Why would
that be excluded from rt testing?

Since there's only 8 tests on your list, I'm curious why each of them
gets disabled for rt filesystems?

--D

>  9 files changed, 16 insertions(+)
> 
> diff --git a/common/rc b/common/rc
> index 53bbb11..a0081f1 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -1835,6 +1835,14 @@ _require_realtime()
>  	_notrun "Realtime device required, skipped this test"
>  }
>  
> +# This test requires that a realtime subvolume is not in use
> +#
> +_require_no_realtime()
> +{
> +    [ -n "$SCRATCH_RTDEV" ] && \
> +	_notrun "Test not compatible with realtime subvolumes, skipped this test"
> +}
> +
>  # this test requires that a specified command (executable) exists
>  # $1 - command, $2 - name for error message
>  #
> diff --git a/tests/generic/409 b/tests/generic/409
> index 3ad65c9..8ed3e4e 100755
> --- a/tests/generic/409
> +++ b/tests/generic/409
> @@ -65,6 +65,7 @@ _supported_os Linux
>  _require_test
>  _require_scratch
>  _require_local_device $SCRATCH_DEV
> +_require_no_realtime
>  
>  fs_stress()
>  {
> diff --git a/tests/generic/410 b/tests/generic/410
> index 63ab716..1bbaff8 100755
> --- a/tests/generic/410
> +++ b/tests/generic/410
> @@ -73,6 +73,7 @@ _supported_os Linux
>  _require_test
>  _require_scratch
>  _require_local_device $SCRATCH_DEV
> +_require_no_realtime
>  
>  fs_stress()
>  {
> diff --git a/tests/generic/411 b/tests/generic/411
> index 83f6d26..ea718fc 100755
> --- a/tests/generic/411
> +++ b/tests/generic/411
> @@ -54,6 +54,7 @@ _supported_os Linux
>  _require_test
>  _require_scratch
>  _require_local_device $SCRATCH_DEV
> +_require_no_realtime
>  
>  fs_stress()
>  {
> diff --git a/tests/xfs/077 b/tests/xfs/077
> index eba4f08..d202fa4 100755
> --- a/tests/xfs/077
> +++ b/tests/xfs/077
> @@ -50,6 +50,7 @@ _cleanup()
>  
>  _supported_fs xfs
>  _supported_os Linux
> +_require_no_realtime
>  _require_scratch
>  _require_xfs_crc
>  _require_meta_uuid
> diff --git a/tests/xfs/189 b/tests/xfs/189
> index 636f6f0..699eb3c 100755
> --- a/tests/xfs/189
> +++ b/tests/xfs/189
> @@ -236,6 +236,7 @@ _putback_scratch_fstab()
>  _supported_fs xfs
>  _supported_os Linux
>  
> +_require_no_realtime
>  _require_scratch
>  _require_noattr2
>  
> diff --git a/tests/xfs/191-input-validation b/tests/xfs/191-input-validation
> index cff3efa..764ac9b 100755
> --- a/tests/xfs/191-input-validation
> +++ b/tests/xfs/191-input-validation
> @@ -47,6 +47,7 @@ _cleanup()
>  # Modify as appropriate.
>  _supported_fs xfs
>  _supported_os Linux
> +_require_no_realtime
>  _require_scratch
>  _require_xfs_mkfs_validation
>  
> diff --git a/tests/xfs/202 b/tests/xfs/202
> index b9827a7..f887873 100755
> --- a/tests/xfs/202
> +++ b/tests/xfs/202
> @@ -38,6 +38,7 @@ status=1	# failure is the default!
>  _supported_fs xfs
>  _supported_os Linux
>  
> +_require_no_realtime
>  # single AG will cause default xfs_repair to fail. This test is actually
>  # testing the special corner case option needed to repair a single AG fs.
>  _require_scratch_nocheck
> diff --git a/tests/xfs/284 b/tests/xfs/284
> index e3625fe..fa5dac8 100755
> --- a/tests/xfs/284
> +++ b/tests/xfs/284
> @@ -49,6 +49,7 @@ rm -f $seqres.full
>  # real QA test starts here
>  _supported_fs xfs
>  _supported_os Linux
> +_require_no_realtime
>  _require_test
>  _require_scratch
>  
> -- 
> 2.9.5
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Richard Wareing Sept. 26, 2017, 2:25 a.m. UTC | #2
Darrick J. Wong <darrick.wong@oracle.com> wrote:

> On Mon, Sep 25, 2017 at 12:56:23PM -0700, Richard Wareing wrote:
>> Some tests do not play well with realtime devices, in an effort to
>> produce a stable set of test which exercise the realtime code paths
>> we introduce a _require_no_realtime function to allow tests to opt
>> out of realtime subvolume test runs.
>>
>> Signed-off-by: Richard Wareing <rwareing@fb.com>
>> ---
>> Changes since v1:
>> * None
>>
>>  common/rc                      | 8 ++++++++
>>  tests/generic/409              | 1 +
>>  tests/generic/410              | 1 +
>
> Why don't shared subtree tests work w/ rt?
>

409, 410 decide to mount without the -o rtdev, option.  The fix
here could be trivial, or more involved I'm not really sure.



>> tests/generic/411              | 1 +
>
> Some sort of mount regression?
>

Same as 409/410.

>> tests/xfs/077                  | 1 +

Uses xfs_copy which does not have realtime support.

>>  tests/xfs/189                  | 1 +

Bails with "noattr2 mount option not supported on /dev/loop32".
Possibly a trivial fix?

>>  tests/xfs/191-input-validation | 1 +

Fails with:
  QA output created by 191-input-validation
  silence is golden
+pass -b size=512 -l sectsize=1024 /dev/loop32
+fail -d size=4294967296 /dev/loop32
+fail -d agsize=1g /dev/loop32
+fail -l size=419430400 -d size=4294967296 /dev/loop32
+pass -n ftype=0 /dev/loop32

This test makes my eyes bleed, hoping somebody with more context on
this test can point me in the right direction here.


>>  tests/xfs/202                  | 1 +

Upon further inspection, this fails because it assumes your
scratch device is >1GB.  Though it should probably throw a nice
error indicating your scratch device isn't large enough.

>>  tests/xfs/284                  | 1 +

Uses xfs_copy which does not support realtime.

>
> This test checks that xfsprogs don't run on a mounted fs.  Why would
> that be excluded from rt testing?
>
> Since there's only 8 tests on your list, I'm curious why each of them
> gets disabled for rt filesystems?
>

Aside from the tests using xfs_copy, I can probably add RT support
to most of these tests, but I figured the first step was to first
get to a  stable set of working tests for realtime.

Richard



> --D
>
>> 9 files changed, 16 insertions(+)
>>
>> diff --git a/common/rc b/common/rc
>> index 53bbb11..a0081f1 100644
>> --- a/common/rc
>> +++ b/common/rc
>> @@ -1835,6 +1835,14 @@ _require_realtime()
>>  	_notrun "Realtime device required, skipped this test"
>>  }
>>
>> +# This test requires that a realtime subvolume is not in use
>> +#
>> +_require_no_realtime()
>> +{
>> +    [ -n "$SCRATCH_RTDEV" ] && \
>> +	_notrun "Test not compatible with realtime subvolumes, skipped this  
>> test"
>> +}
>> +
>>  # this test requires that a specified command (executable) exists
>>  # $1 - command, $2 - name for error message
>>  #
>> diff --git a/tests/generic/409 b/tests/generic/409
>> index 3ad65c9..8ed3e4e 100755
>> --- a/tests/generic/409
>> +++ b/tests/generic/409
>> @@ -65,6 +65,7 @@ _supported_os Linux
>>  _require_test
>>  _require_scratch
>>  _require_local_device $SCRATCH_DEV
>> +_require_no_realtime
>>
>>  fs_stress()
>>  {
>> diff --git a/tests/generic/410 b/tests/generic/410
>> index 63ab716..1bbaff8 100755
>> --- a/tests/generic/410
>> +++ b/tests/generic/410
>> @@ -73,6 +73,7 @@ _supported_os Linux
>>  _require_test
>>  _require_scratch
>>  _require_local_device $SCRATCH_DEV
>> +_require_no_realtime
>>
>>  fs_stress()
>>  {
>> diff --git a/tests/generic/411 b/tests/generic/411
>> index 83f6d26..ea718fc 100755
>> --- a/tests/generic/411
>> +++ b/tests/generic/411
>> @@ -54,6 +54,7 @@ _supported_os Linux
>>  _require_test
>>  _require_scratch
>>  _require_local_device $SCRATCH_DEV
>> +_require_no_realtime
>>
>>  fs_stress()
>>  {
>> diff --git a/tests/xfs/077 b/tests/xfs/077
>> index eba4f08..d202fa4 100755
>> --- a/tests/xfs/077
>> +++ b/tests/xfs/077
>> @@ -50,6 +50,7 @@ _cleanup()
>>
>>  _supported_fs xfs
>>  _supported_os Linux
>> +_require_no_realtime
>>  _require_scratch
>>  _require_xfs_crc
>>  _require_meta_uuid
>> diff --git a/tests/xfs/189 b/tests/xfs/189
>> index 636f6f0..699eb3c 100755
>> --- a/tests/xfs/189
>> +++ b/tests/xfs/189
>> @@ -236,6 +236,7 @@ _putback_scratch_fstab()
>>  _supported_fs xfs
>>  _supported_os Linux
>>
>> +_require_no_realtime
>>  _require_scratch
>>  _require_noattr2
>>
>> diff --git a/tests/xfs/191-input-validation  
>> b/tests/xfs/191-input-validation
>> index cff3efa..764ac9b 100755
>> --- a/tests/xfs/191-input-validation
>> +++ b/tests/xfs/191-input-validation
>> @@ -47,6 +47,7 @@ _cleanup()
>>  # Modify as appropriate.
>>  _supported_fs xfs
>>  _supported_os Linux
>> +_require_no_realtime
>>  _require_scratch
>>  _require_xfs_mkfs_validation
>>
>> diff --git a/tests/xfs/202 b/tests/xfs/202
>> index b9827a7..f887873 100755
>> --- a/tests/xfs/202
>> +++ b/tests/xfs/202
>> @@ -38,6 +38,7 @@ status=1	# failure is the default!
>>  _supported_fs xfs
>>  _supported_os Linux
>>
>> +_require_no_realtime
>>  # single AG will cause default xfs_repair to fail. This test is actually
>>  # testing the special corner case option needed to repair a single AG fs.
>>  _require_scratch_nocheck
>> diff --git a/tests/xfs/284 b/tests/xfs/284
>> index e3625fe..fa5dac8 100755
>> --- a/tests/xfs/284
>> +++ b/tests/xfs/284
>> @@ -49,6 +49,7 @@ rm -f $seqres.full
>>  # real QA test starts here
>>  _supported_fs xfs
>>  _supported_os Linux
>> +_require_no_realtime
>>  _require_test
>>  _require_scratch
>>
>> -- 
>> 2.9.5
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html


--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Eryu Guan Sept. 26, 2017, 10:01 a.m. UTC | #3
On Mon, Sep 25, 2017 at 07:25:27PM -0700, Richard Wareing wrote:
> Darrick J. Wong <darrick.wong@oracle.com> wrote:
> 
> > On Mon, Sep 25, 2017 at 12:56:23PM -0700, Richard Wareing wrote:
> > > Some tests do not play well with realtime devices, in an effort to
> > > produce a stable set of test which exercise the realtime code paths
> > > we introduce a _require_no_realtime function to allow tests to opt
> > > out of realtime subvolume test runs.
> > > 
> > > Signed-off-by: Richard Wareing <rwareing@fb.com>
> > > ---
> > > Changes since v1:
> > > * None
> > > 
> > >  common/rc                      | 8 ++++++++
> > >  tests/generic/409              | 1 +
> > >  tests/generic/410              | 1 +
> > 
> > Why don't shared subtree tests work w/ rt?
> > 
> 
> 409, 410 decide to mount without the -o rtdev, option.  The fix
> here could be trivial, or more involved I'm not really sure.
> 
> 
> 
> > > tests/generic/411              | 1 +
> > 
> > Some sort of mount regression?
> > 
> 
> Same as 409/410.

It seems generic/409-411 are not hard to fix, just make _get_mount honor
$SCRATCH_OPTIONS (need to make 'type' in _scratch_options local,
otherwise 'type' in the test would be overwritten). But these three
tests are testing vfs level mount semantics, realtime or not should not
make any difference, seems not worth the effort to me.

> 
> > > tests/xfs/077                  | 1 +
> 
> Uses xfs_copy which does not have realtime support.
> 
> > >  tests/xfs/189                  | 1 +
> 
> Bails with "noattr2 mount option not supported on /dev/loop32".
> Possibly a trivial fix?

This test already _notrun with above message gracefully when testing
with rtdev set, I don't think it needs an extra no_realtime rule.

> 
> > >  tests/xfs/191-input-validation | 1 +
> 
> Fails with:
>  QA output created by 191-input-validation
>  silence is golden
> +pass -b size=512 -l sectsize=1024 /dev/loop32
> +fail -d size=4294967296 /dev/loop32
> +fail -d agsize=1g /dev/loop32
> +fail -l size=419430400 -d size=4294967296 /dev/loop32
> +pass -n ftype=0 /dev/loop32
> 
> This test makes my eyes bleed, hoping somebody with more context on
> this test can point me in the right direction here.

This test passes for me with rtdev set, I'm using latest for-next branch
of upstream xfsprogs repo. (Maybe because you're using a too small
SCRATCH_DEV?)

> 
> 
> > >  tests/xfs/202                  | 1 +
> 
> Upon further inspection, this fails because it assumes your
> scratch device is >1GB.  Though it should probably throw a nice
> error indicating your scratch device isn't large enough.

Tested with 10G SCRATCH_DEV with rtdev set, and test passed, so the
failure has nothing to do with realtime. I agreed it should _notrun if
SCRATCH_DEV doesn't have enough space, perhaps do a

_scratch_mkfs_sized $((1024 * 1024 * 1024))

first, which would _notrun gracefully if SCRATCH_DEV is smaller than 1G.

But I'd recommend testing with larger devices, 15G should be good
enough.

> 
> > >  tests/xfs/284                  | 1 +
> 
> Uses xfs_copy which does not support realtime.
> 
> > 
> > This test checks that xfsprogs don't run on a mounted fs.  Why would
> > that be excluded from rt testing?
> > 
> > Since there's only 8 tests on your list, I'm curious why each of them
> > gets disabled for rt filesystems?
> > 
> 
> Aside from the tests using xfs_copy, I can probably add RT support

For the xfs_copy tests, a comment saying why we need
_require_no_realtime would be good.

> to most of these tests, but I figured the first step was to first
> get to a  stable set of working tests for realtime.
> 
> Richard
> 
> 
> 
> > --D
> > 
> > > 9 files changed, 16 insertions(+)
> > > 
> > > diff --git a/common/rc b/common/rc
> > > index 53bbb11..a0081f1 100644
> > > --- a/common/rc
> > > +++ b/common/rc
> > > @@ -1835,6 +1835,14 @@ _require_realtime()
> > >  	_notrun "Realtime device required, skipped this test"
> > >  }
> > > 
> > > +# This test requires that a realtime subvolume is not in use
> > > +#
> > > +_require_no_realtime()
> > > +{
> > > +    [ -n "$SCRATCH_RTDEV" ] && \
> > > +	_notrun "Test not compatible with realtime subvolumes, skipped
> > > this test"

We should check if $USE_EXTERNAL is 'yes' too, SCRATCH_RTDEV alone won't
enable realtime testings.

	[ "$USE_EXTERNAL" = yes ] && [ -n "$SCRATCH_RTDEV" ] && \ ...

Thanks,
Eryu
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/common/rc b/common/rc
index 53bbb11..a0081f1 100644
--- a/common/rc
+++ b/common/rc
@@ -1835,6 +1835,14 @@  _require_realtime()
 	_notrun "Realtime device required, skipped this test"
 }
 
+# This test requires that a realtime subvolume is not in use
+#
+_require_no_realtime()
+{
+    [ -n "$SCRATCH_RTDEV" ] && \
+	_notrun "Test not compatible with realtime subvolumes, skipped this test"
+}
+
 # this test requires that a specified command (executable) exists
 # $1 - command, $2 - name for error message
 #
diff --git a/tests/generic/409 b/tests/generic/409
index 3ad65c9..8ed3e4e 100755
--- a/tests/generic/409
+++ b/tests/generic/409
@@ -65,6 +65,7 @@  _supported_os Linux
 _require_test
 _require_scratch
 _require_local_device $SCRATCH_DEV
+_require_no_realtime
 
 fs_stress()
 {
diff --git a/tests/generic/410 b/tests/generic/410
index 63ab716..1bbaff8 100755
--- a/tests/generic/410
+++ b/tests/generic/410
@@ -73,6 +73,7 @@  _supported_os Linux
 _require_test
 _require_scratch
 _require_local_device $SCRATCH_DEV
+_require_no_realtime
 
 fs_stress()
 {
diff --git a/tests/generic/411 b/tests/generic/411
index 83f6d26..ea718fc 100755
--- a/tests/generic/411
+++ b/tests/generic/411
@@ -54,6 +54,7 @@  _supported_os Linux
 _require_test
 _require_scratch
 _require_local_device $SCRATCH_DEV
+_require_no_realtime
 
 fs_stress()
 {
diff --git a/tests/xfs/077 b/tests/xfs/077
index eba4f08..d202fa4 100755
--- a/tests/xfs/077
+++ b/tests/xfs/077
@@ -50,6 +50,7 @@  _cleanup()
 
 _supported_fs xfs
 _supported_os Linux
+_require_no_realtime
 _require_scratch
 _require_xfs_crc
 _require_meta_uuid
diff --git a/tests/xfs/189 b/tests/xfs/189
index 636f6f0..699eb3c 100755
--- a/tests/xfs/189
+++ b/tests/xfs/189
@@ -236,6 +236,7 @@  _putback_scratch_fstab()
 _supported_fs xfs
 _supported_os Linux
 
+_require_no_realtime
 _require_scratch
 _require_noattr2
 
diff --git a/tests/xfs/191-input-validation b/tests/xfs/191-input-validation
index cff3efa..764ac9b 100755
--- a/tests/xfs/191-input-validation
+++ b/tests/xfs/191-input-validation
@@ -47,6 +47,7 @@  _cleanup()
 # Modify as appropriate.
 _supported_fs xfs
 _supported_os Linux
+_require_no_realtime
 _require_scratch
 _require_xfs_mkfs_validation
 
diff --git a/tests/xfs/202 b/tests/xfs/202
index b9827a7..f887873 100755
--- a/tests/xfs/202
+++ b/tests/xfs/202
@@ -38,6 +38,7 @@  status=1	# failure is the default!
 _supported_fs xfs
 _supported_os Linux
 
+_require_no_realtime
 # single AG will cause default xfs_repair to fail. This test is actually
 # testing the special corner case option needed to repair a single AG fs.
 _require_scratch_nocheck
diff --git a/tests/xfs/284 b/tests/xfs/284
index e3625fe..fa5dac8 100755
--- a/tests/xfs/284
+++ b/tests/xfs/284
@@ -49,6 +49,7 @@  rm -f $seqres.full
 # real QA test starts here
 _supported_fs xfs
 _supported_os Linux
+_require_no_realtime
 _require_test
 _require_scratch