Message ID | 20170925195625.756877-1-rwareing@fb.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
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
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
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 --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
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(+)