* [PATCH v2 0/5] re-enable tests that require scratch dev on NFS
@ 2014-10-31 17:03 Eryu Guan
2014-10-31 17:03 ` [PATCH v2 1/5] common: " Eryu Guan
` (4 more replies)
0 siblings, 5 replies; 19+ messages in thread
From: Eryu Guan @ 2014-10-31 17:03 UTC (permalink / raw)
To: fstests; +Cc: linux-nfs, Eryu Guan
The commit below disables tests requires scratch dev running on NFS
c041421 xfstests: stop special casing nfs and udf
Now re-enable them to get a larger test coverage on NFS.
Also do more updates to avoid unnecessary failures on NFS.
I tested against NFSv3 NFSv4.0 NFSv4.1 (both server and client are linux
running 3.18-rc1 kernel), the results look good.
Failures on NFSv3:
generic/035 generic/089 generic/258 generic/294
Failures on NFSv4.0:
generic/035 generic/169 generic/294
Failures on NFSv4.1:
I hit kernel BUG_ON when testing on NFSv4.1 in generic/285
SEEK_DATA/SEEK_HOLE test. I think there's already a patch to fix it.
http://www.spinics.net/lists/linux-nfs/msg47359.html
Note that generic/294 does remount,ro on SCRATCH_DEV, but TEST_DEV is
affected too, so some tests after generic/294 fail because of EROFS.
Run the failed tests separately and they all passed.
I'm not sure if it's a bug, but I filed one, please see
https://bugzilla.redhat.com/show_bug.cgi?id=1158046
The third patch disables all atime related tests on NFS, and Christoph
starts a discussion about NFS atime handling issue in v1 thread. Before
there's a conclusion I keep the patch as it is, and we can update it
later when we decide to test atime on NFS again.
v2:
- introduce _scratch_cleanup_files helper to remove all files on
$SCRATCH_MNT, for later CIFS use. (Christoph Hellwig)
- split _require_relatime change into another patch (Christoph Hellwig)
v1: http://www.spinics.net/lists/linux-nfs/msg47423.html
Thanks,
Eryu
---
Eryu Guan (5):
common: re-enable tests that require scratch dev on NFS
common: add _require_block_device() helper
common: skip atime related tests on NFS
common: use _scratch_mount helper in _require_relatime()
generic/277: add _require_attrs
common/rc | 46 ++++++++++++++++++++++++++++++++++++++++++----
tests/generic/003 | 1 +
tests/generic/076 | 1 +
tests/generic/192 | 1 +
tests/generic/277 | 2 ++
5 files changed, 47 insertions(+), 4 deletions(-)
--
1.9.3
^ permalink raw reply [flat|nested] 19+ messages in thread* [PATCH v2 1/5] common: re-enable tests that require scratch dev on NFS 2014-10-31 17:03 [PATCH v2 0/5] re-enable tests that require scratch dev on NFS Eryu Guan @ 2014-10-31 17:03 ` Eryu Guan 2014-11-10 2:12 ` Dave Chinner 2014-11-12 18:36 ` Steve French 2014-10-31 17:03 ` [PATCH v2 2/5] common: add _require_block_device() helper Eryu Guan ` (3 subsequent siblings) 4 siblings, 2 replies; 19+ messages in thread From: Eryu Guan @ 2014-10-31 17:03 UTC (permalink / raw) To: fstests; +Cc: linux-nfs, Eryu Guan This commit disables tests requires scratch dev running on NFS c041421 xfstests: stop special casing nfs and udf Now re-enable them to get a larger test coverage on NFS. Signed-off-by: Eryu Guan <eguan@redhat.com> --- common/rc | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/common/rc b/common/rc index 747cf72..ae03712 100644 --- a/common/rc +++ b/common/rc @@ -551,6 +551,14 @@ _mkfs_dev() rm -f $tmp_dir.mkfserr $tmp_dir.mkfsstd } +# remove all files in $SCRATCH_MNT, useful when testing on NFS/CIFS +_scratch_cleanup_files() +{ + _scratch_mount + rm -rf $SCRATCH_MNT/* + _scratch_unmount +} + _scratch_mkfs() { case $FSTYP in @@ -558,7 +566,9 @@ _scratch_mkfs() _scratch_mkfs_xfs $* ;; nfs*) - # do nothing for nfs + # unable to re-create NFS, just remove all files in $SCRATCH_MNT to + # avoid EEXIST caused by the leftover files created in previous runs + _scratch_cleanup_files ;; cifs) # do nothing for cifs @@ -1032,8 +1042,14 @@ _require_scratch_nocheck() { case "$FSTYP" in nfs*) - _notrun "requires a scratch device" - ;; + echo $SCRATCH_DEV | grep -q ":/" > /dev/null 2>&1 + if [ -z "$SCRATCH_DEV" -o "$?" != "0" ]; then + _notrun "this test requires a valid \$SCRATCH_DEV" + fi + if [ ! -d "$SCRATCH_MNT" ]; then + _notrun "this test requires a valid \$SCRATCH_MNT" + fi + ;; cifs) _notrun "requires a scratch device" ;; -- 1.9.3 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH v2 1/5] common: re-enable tests that require scratch dev on NFS 2014-10-31 17:03 ` [PATCH v2 1/5] common: " Eryu Guan @ 2014-11-10 2:12 ` Dave Chinner 2014-11-10 4:05 ` Eryu Guan 2014-11-12 18:36 ` Steve French 1 sibling, 1 reply; 19+ messages in thread From: Dave Chinner @ 2014-11-10 2:12 UTC (permalink / raw) To: Eryu Guan; +Cc: fstests, linux-nfs On Sat, Nov 01, 2014 at 01:03:56AM +0800, Eryu Guan wrote: > This commit disables tests requires scratch dev running on NFS > > c041421 xfstests: stop special casing nfs and udf > > Now re-enable them to get a larger test coverage on NFS. > > Signed-off-by: Eryu Guan <eguan@redhat.com> I'll commit this as is, but can you send another patch to wire this same functionality up for CIFS? Cheers, Dave. -- Dave Chinner david@fromorbit.com ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v2 1/5] common: re-enable tests that require scratch dev on NFS 2014-11-10 2:12 ` Dave Chinner @ 2014-11-10 4:05 ` Eryu Guan 0 siblings, 0 replies; 19+ messages in thread From: Eryu Guan @ 2014-11-10 4:05 UTC (permalink / raw) To: Dave Chinner; +Cc: fstests, linux-nfs On Mon, Nov 10, 2014 at 01:12:48PM +1100, Dave Chinner wrote: > On Sat, Nov 01, 2014 at 01:03:56AM +0800, Eryu Guan wrote: > > This commit disables tests requires scratch dev running on NFS > > > > c041421 xfstests: stop special casing nfs and udf > > > > Now re-enable them to get a larger test coverage on NFS. > > > > Signed-off-by: Eryu Guan <eguan@redhat.com> > > I'll commit this as is, but can you send another patch to wire this > same functionality up for CIFS? Sure, will do that. Thanks, Eryu ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v2 1/5] common: re-enable tests that require scratch dev on NFS 2014-10-31 17:03 ` [PATCH v2 1/5] common: " Eryu Guan 2014-11-10 2:12 ` Dave Chinner @ 2014-11-12 18:36 ` Steve French 2014-11-13 3:33 ` Dave Chinner 1 sibling, 1 reply; 19+ messages in thread From: Steve French @ 2014-11-12 18:36 UTC (permalink / raw) To: Eryu Guan Cc: fstests, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org, dros There should be a check to make sure SCRATCH_MNT exists before you wipe the whole disk .... +# remove all files in $SCRATCH_MNT, useful when testing on NFS/CIFS +_scratch_cleanup_files() +{ + _scratch_mount + rm -rf $SCRATCH_MNT/* + _scratch_unmount +} + so if no SCRATCH_MNT then this does rm -rf/* right ... (and wipes out your whole system ...) On Fri, Oct 31, 2014 at 12:03 PM, Eryu Guan <eguan@redhat.com> wrote: > This commit disables tests requires scratch dev running on NFS > > c041421 xfstests: stop special casing nfs and udf > > Now re-enable them to get a larger test coverage on NFS. > > Signed-off-by: Eryu Guan <eguan@redhat.com> > --- > common/rc | 22 +++++++++++++++++++--- > 1 file changed, 19 insertions(+), 3 deletions(-) > > diff --git a/common/rc b/common/rc > index 747cf72..ae03712 100644 > --- a/common/rc > +++ b/common/rc > @@ -551,6 +551,14 @@ _mkfs_dev() > rm -f $tmp_dir.mkfserr $tmp_dir.mkfsstd > } > > +# remove all files in $SCRATCH_MNT, useful when testing on NFS/CIFS > +_scratch_cleanup_files() > +{ > + _scratch_mount > + rm -rf $SCRATCH_MNT/* > + _scratch_unmount > +} > + > _scratch_mkfs() > { > case $FSTYP in > @@ -558,7 +566,9 @@ _scratch_mkfs() > _scratch_mkfs_xfs $* > ;; > nfs*) > - # do nothing for nfs > + # unable to re-create NFS, just remove all files in $SCRATCH_MNT to > + # avoid EEXIST caused by the leftover files created in previous runs > + _scratch_cleanup_files > ;; > cifs) > # do nothing for cifs > @@ -1032,8 +1042,14 @@ _require_scratch_nocheck() > { > case "$FSTYP" in > nfs*) > - _notrun "requires a scratch device" > - ;; > + echo $SCRATCH_DEV | grep -q ":/" > /dev/null 2>&1 > + if [ -z "$SCRATCH_DEV" -o "$?" != "0" ]; then > + _notrun "this test requires a valid \$SCRATCH_DEV" > + fi > + if [ ! -d "$SCRATCH_MNT" ]; then > + _notrun "this test requires a valid \$SCRATCH_MNT" > + fi > + ;; > cifs) > _notrun "requires a scratch device" > ;; > -- > 1.9.3 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Thanks, Steve ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v2 1/5] common: re-enable tests that require scratch dev on NFS 2014-11-12 18:36 ` Steve French @ 2014-11-13 3:33 ` Dave Chinner 2014-11-14 17:02 ` Steve French 0 siblings, 1 reply; 19+ messages in thread From: Dave Chinner @ 2014-11-13 3:33 UTC (permalink / raw) To: Steve French Cc: Eryu Guan, fstests, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org, dros On Wed, Nov 12, 2014 at 12:36:13PM -0600, Steve French wrote: > On Fri, Oct 31, 2014 at 12:03 PM, Eryu Guan <eguan@redhat.com> wrote: > > This commit disables tests requires scratch dev running on NFS > > > > c041421 xfstests: stop special casing nfs and udf > > > > Now re-enable them to get a larger test coverage on NFS. > > > > Signed-off-by: Eryu Guan <eguan@redhat.com> > > --- > > common/rc | 22 +++++++++++++++++++--- > > 1 file changed, 19 insertions(+), 3 deletions(-) > > > > diff --git a/common/rc b/common/rc > > index 747cf72..ae03712 100644 > > --- a/common/rc > > +++ b/common/rc > > @@ -551,6 +551,14 @@ _mkfs_dev() > > rm -f $tmp_dir.mkfserr $tmp_dir.mkfsstd > > } > > > > +# remove all files in $SCRATCH_MNT, useful when testing on NFS/CIFS > > +_scratch_cleanup_files() > > +{ > > + _scratch_mount > > + rm -rf $SCRATCH_MNT/* > > + _scratch_unmount > > +} > > There should be a check to make sure SCRATCH_MNT exists before you > wipe the whole disk .... > > so if no SCRATCH_MNT then this does rm -rf/* > right ... (and wipes out your whole system ...) You can't get to that function until after all the checks that SCRATCH_MNT exists. i.e. this happens during _scratch_mkfs, and that is only called in tests after all the startup checks validate devices and mounts exist. i.e. see common/config::get_next_config() Cheers, Dave. -- Dave Chinner david@fromorbit.com ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v2 1/5] common: re-enable tests that require scratch dev on NFS 2014-11-13 3:33 ` Dave Chinner @ 2014-11-14 17:02 ` Steve French 2014-11-15 5:35 ` Eryu Guan 2014-11-17 5:34 ` Dave Chinner 0 siblings, 2 replies; 19+ messages in thread From: Steve French @ 2014-11-14 17:02 UTC (permalink / raw) To: Dave Chinner Cc: Eryu Guan, fstests, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org, Weston Andros Adamson On Wed, Nov 12, 2014 at 9:33 PM, Dave Chinner <david@fromorbit.com> wrote: > On Wed, Nov 12, 2014 at 12:36:13PM -0600, Steve French wrote: >> On Fri, Oct 31, 2014 at 12:03 PM, Eryu Guan <eguan@redhat.com> wrote: >> > This commit disables tests requires scratch dev running on NFS >> > >> > c041421 xfstests: stop special casing nfs and udf >> > >> > Now re-enable them to get a larger test coverage on NFS. >> > >> > Signed-off-by: Eryu Guan <eguan@redhat.com> >> > --- >> > common/rc | 22 +++++++++++++++++++--- >> > 1 file changed, 19 insertions(+), 3 deletions(-) >> > >> > diff --git a/common/rc b/common/rc >> > index 747cf72..ae03712 100644 >> > --- a/common/rc >> > +++ b/common/rc >> > @@ -551,6 +551,14 @@ _mkfs_dev() >> > rm -f $tmp_dir.mkfserr $tmp_dir.mkfsstd >> > } >> > >> > +# remove all files in $SCRATCH_MNT, useful when testing on NFS/CIFS >> > +_scratch_cleanup_files() >> > +{ >> > + _scratch_mount >> > + rm -rf $SCRATCH_MNT/* >> > + _scratch_unmount >> > +} >> >> There should be a check to make sure SCRATCH_MNT exists before you >> wipe the whole disk .... >> >> so if no SCRATCH_MNT then this does rm -rf/* >> right ... (and wipes out your whole system ...) > > You can't get to that function until after all the checks that > SCRATCH_MNT exists. i.e. this happens during _scratch_mkfs, and that > is only called in tests after all the startup checks validate > devices and mounts exist. i.e. see common/config::get_next_config() Well, I reproduced it easily enough again today (after taking a snapshot of the VM) by simply running generic/120 against NFS with SCRATCH_MNT not specified in local.config Dros also ran into this problem. The patch below fixes it for me but it wasn't immediately obvious how to best return info to the user (ie print messages that make sense here - "echo" seems to be supressed in common/rc and notrun exits and logs it to a file but not to the screen in this case) sfrench@ubuntu:~/xfstests$ git diff -a diff --git a/common/rc b/common/rc index d5e3aff..866244b 100644 --- a/common/rc +++ b/common/rc @@ -555,6 +555,9 @@ _mkfs_dev() _scratch_cleanup_files() { _scratch_mount + if ! [ "$SCRATCH_MNT" ]; then + _notrun "this test requires a \$SCRATCH_MNT to be specified" + fi rm -rf $SCRATCH_MNT/* _scratch_unmount } -- Thanks, Steve ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH v2 1/5] common: re-enable tests that require scratch dev on NFS 2014-11-14 17:02 ` Steve French @ 2014-11-15 5:35 ` Eryu Guan 2014-11-17 5:41 ` Dave Chinner 2014-11-17 5:34 ` Dave Chinner 1 sibling, 1 reply; 19+ messages in thread From: Eryu Guan @ 2014-11-15 5:35 UTC (permalink / raw) To: Steve French Cc: Dave Chinner, fstests, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org, Weston Andros Adamson On Fri, Nov 14, 2014 at 11:02:50AM -0600, Steve French wrote: > On Wed, Nov 12, 2014 at 9:33 PM, Dave Chinner <david@fromorbit.com> wrote: > > On Wed, Nov 12, 2014 at 12:36:13PM -0600, Steve French wrote: > >> On Fri, Oct 31, 2014 at 12:03 PM, Eryu Guan <eguan@redhat.com> wrote: > >> > This commit disables tests requires scratch dev running on NFS > >> > > >> > c041421 xfstests: stop special casing nfs and udf > >> > > >> > Now re-enable them to get a larger test coverage on NFS. > >> > > >> > Signed-off-by: Eryu Guan <eguan@redhat.com> > >> > --- > >> > common/rc | 22 +++++++++++++++++++--- > >> > 1 file changed, 19 insertions(+), 3 deletions(-) > >> > > >> > diff --git a/common/rc b/common/rc > >> > index 747cf72..ae03712 100644 > >> > --- a/common/rc > >> > +++ b/common/rc > >> > @@ -551,6 +551,14 @@ _mkfs_dev() > >> > rm -f $tmp_dir.mkfserr $tmp_dir.mkfsstd > >> > } > >> > > >> > +# remove all files in $SCRATCH_MNT, useful when testing on NFS/CIFS > >> > +_scratch_cleanup_files() > >> > +{ > >> > + _scratch_mount > >> > + rm -rf $SCRATCH_MNT/* > >> > + _scratch_unmount > >> > +} > >> > >> There should be a check to make sure SCRATCH_MNT exists before you > >> wipe the whole disk .... > >> > >> so if no SCRATCH_MNT then this does rm -rf/* > >> right ... (and wipes out your whole system ...) > > > > You can't get to that function until after all the checks that > > SCRATCH_MNT exists. i.e. this happens during _scratch_mkfs, and that > > is only called in tests after all the startup checks validate > > devices and mounts exist. i.e. see common/config::get_next_config() > > Well, I reproduced it easily enough again today (after taking a > snapshot of the VM) > by simply running generic/120 against NFS with SCRATCH_MNT not > specified in local.config > Dros also ran into this problem. You're right, I missed that _scratch_mkfs is also called by ./check, and if there's no SCRATCH_MNT set in local.config, only SCRATCH_DEV is set, _scratch_mkfs can be dangerous. [root@hp-dl388eg8-01 xfstests]# ./check -nfs generic/001 FSTYP -- nfs PLATFORM -- Linux/x86_64 hp-dl388eg8-01 3.18.0-rc4+ MKFS_OPTIONS -- -bsize=4096 localhost:/mnt/nfsscratch MOUNT_OPTIONS -- -o context=system_u:object_r:nfs_t:s0 localhost:/mnt/nfsscratch our local _scratch_mkfs routine ... mount: can't find localhost:/mnt/nfsscratch in /etc/fstab rm -rf /* umount: localhost:/mnt/nfsscratch: mountpoint not found check: failed to mkfs $SCRATCH_DEV using specified options Passed all 0 tests (I replaced the real "rm -rf ..." by "echo 'rm -rf ...' in above test) > > The patch below fixes it for me but it wasn't immediately obvious how to best > return info to the user (ie print messages that make sense here - > "echo" seems to be supressed > in common/rc and notrun exits and logs it to a file but not to the > screen in this case) > > sfrench@ubuntu:~/xfstests$ git diff -a > diff --git a/common/rc b/common/rc > index d5e3aff..866244b 100644 > --- a/common/rc > +++ b/common/rc > @@ -555,6 +555,9 @@ _mkfs_dev() > _scratch_cleanup_files() > { > _scratch_mount > + if ! [ "$SCRATCH_MNT" ]; then > + _notrun "this test requires a \$SCRATCH_MNT to be specified" > + fi > rm -rf $SCRATCH_MNT/* > _scratch_unmount > } I propose this patch, which skips _scratch_cleanup_files if called by check [root@hp-dl388eg8-01 xfstests]# git diff diff --git a/common/rc b/common/rc index 435f74f..254fb66 100644 --- a/common/rc +++ b/common/rc @@ -554,6 +554,11 @@ _mkfs_dev() # remove all files in $SCRATCH_MNT, useful when testing on NFS/CIFS _scratch_cleanup_files() { + # do nothing if called by check, variables are not fully valided yet + # SCRATCH_MNT can be empty, which is dangerous + if [ "$iam" == "check" ]; then + return + fi _scratch_mount rm -rf $SCRATCH_MNT/* _scratch_unmount Thanks, Eryu ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH v2 1/5] common: re-enable tests that require scratch dev on NFS 2014-11-15 5:35 ` Eryu Guan @ 2014-11-17 5:41 ` Dave Chinner 2014-11-17 6:06 ` Eryu Guan 0 siblings, 1 reply; 19+ messages in thread From: Dave Chinner @ 2014-11-17 5:41 UTC (permalink / raw) To: Eryu Guan Cc: Steve French, fstests, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org, Weston Andros Adamson On Sat, Nov 15, 2014 at 01:35:33PM +0800, Eryu Guan wrote: > On Fri, Nov 14, 2014 at 11:02:50AM -0600, Steve French wrote: > > On Wed, Nov 12, 2014 at 9:33 PM, Dave Chinner <david@fromorbit.com> wrote: > > > On Wed, Nov 12, 2014 at 12:36:13PM -0600, Steve French wrote: > > >> On Fri, Oct 31, 2014 at 12:03 PM, Eryu Guan <eguan@redhat.com> wrote: > > >> > This commit disables tests requires scratch dev running on NFS > > >> > > > >> > c041421 xfstests: stop special casing nfs and udf > > >> > > > >> > Now re-enable them to get a larger test coverage on NFS. > > >> > > > >> > Signed-off-by: Eryu Guan <eguan@redhat.com> > > >> > --- > > >> > common/rc | 22 +++++++++++++++++++--- > > >> > 1 file changed, 19 insertions(+), 3 deletions(-) > > >> > > > >> > diff --git a/common/rc b/common/rc > > >> > index 747cf72..ae03712 100644 > > >> > --- a/common/rc > > >> > +++ b/common/rc > > >> > @@ -551,6 +551,14 @@ _mkfs_dev() > > >> > rm -f $tmp_dir.mkfserr $tmp_dir.mkfsstd > > >> > } > > >> > > > >> > +# remove all files in $SCRATCH_MNT, useful when testing on NFS/CIFS > > >> > +_scratch_cleanup_files() > > >> > +{ > > >> > + _scratch_mount > > >> > + rm -rf $SCRATCH_MNT/* > > >> > + _scratch_unmount > > >> > +} > > >> > > >> There should be a check to make sure SCRATCH_MNT exists before you > > >> wipe the whole disk .... > > >> > > >> so if no SCRATCH_MNT then this does rm -rf/* > > >> right ... (and wipes out your whole system ...) > > > > > > You can't get to that function until after all the checks that > > > SCRATCH_MNT exists. i.e. this happens during _scratch_mkfs, and that > > > is only called in tests after all the startup checks validate > > > devices and mounts exist. i.e. see common/config::get_next_config() > > > > Well, I reproduced it easily enough again today (after taking a > > snapshot of the VM) > > by simply running generic/120 against NFS with SCRATCH_MNT not > > specified in local.config > > Dros also ran into this problem. > > You're right, I missed that _scratch_mkfs is also called by ./check, > and if there's no SCRATCH_MNT set in local.config, only SCRATCH_DEV is > set, _scratch_mkfs can be dangerous. As I asked earlier in this thread: why isn't get_next_config() catching this? > I propose this patch, which skips _scratch_cleanup_files if called by check > > [root@hp-dl388eg8-01 xfstests]# git diff > diff --git a/common/rc b/common/rc > index 435f74f..254fb66 100644 > --- a/common/rc > +++ b/common/rc > @@ -554,6 +554,11 @@ _mkfs_dev() > # remove all files in $SCRATCH_MNT, useful when testing on NFS/CIFS > _scratch_cleanup_files() > { > + # do nothing if called by check, variables are not fully valided yet > + # SCRATCH_MNT can be empty, which is dangerous > + if [ "$iam" == "check" ]; then > + return > + fi Again, this is the wrong place to try to fix this - we haven't fixed the landmine that has left us running with an invalid config. IOWs, by the time _scratch_mkfs is called from *anywhere* we should have fully validated the environment to be correct and valid. Parsing and validating the config we have loaded from the config file is the job of get_next_config(), yes? Cheers, Dave. -- Dave Chinner david@fromorbit.com ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v2 1/5] common: re-enable tests that require scratch dev on NFS 2014-11-17 5:41 ` Dave Chinner @ 2014-11-17 6:06 ` Eryu Guan 2014-11-17 6:54 ` Dave Chinner 0 siblings, 1 reply; 19+ messages in thread From: Eryu Guan @ 2014-11-17 6:06 UTC (permalink / raw) To: Dave Chinner Cc: Steve French, fstests, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org, Weston Andros Adamson On Mon, Nov 17, 2014 at 04:41:41PM +1100, Dave Chinner wrote: > On Sat, Nov 15, 2014 at 01:35:33PM +0800, Eryu Guan wrote: > > On Fri, Nov 14, 2014 at 11:02:50AM -0600, Steve French wrote: > > > On Wed, Nov 12, 2014 at 9:33 PM, Dave Chinner <david@fromorbit.com> wrote: > > > > On Wed, Nov 12, 2014 at 12:36:13PM -0600, Steve French wrote: > > > >> On Fri, Oct 31, 2014 at 12:03 PM, Eryu Guan <eguan@redhat.com> wrote: > > > >> > This commit disables tests requires scratch dev running on NFS > > > >> > > > > >> > c041421 xfstests: stop special casing nfs and udf > > > >> > > > > >> > Now re-enable them to get a larger test coverage on NFS. > > > >> > > > > >> > Signed-off-by: Eryu Guan <eguan@redhat.com> > > > >> > --- > > > >> > common/rc | 22 +++++++++++++++++++--- > > > >> > 1 file changed, 19 insertions(+), 3 deletions(-) > > > >> > > > > >> > diff --git a/common/rc b/common/rc > > > >> > index 747cf72..ae03712 100644 > > > >> > --- a/common/rc > > > >> > +++ b/common/rc > > > >> > @@ -551,6 +551,14 @@ _mkfs_dev() > > > >> > rm -f $tmp_dir.mkfserr $tmp_dir.mkfsstd > > > >> > } > > > >> > > > > >> > +# remove all files in $SCRATCH_MNT, useful when testing on NFS/CIFS > > > >> > +_scratch_cleanup_files() > > > >> > +{ > > > >> > + _scratch_mount > > > >> > + rm -rf $SCRATCH_MNT/* > > > >> > + _scratch_unmount > > > >> > +} > > > >> > > > >> There should be a check to make sure SCRATCH_MNT exists before you > > > >> wipe the whole disk .... > > > >> > > > >> so if no SCRATCH_MNT then this does rm -rf/* > > > >> right ... (and wipes out your whole system ...) > > > > > > > > You can't get to that function until after all the checks that > > > > SCRATCH_MNT exists. i.e. this happens during _scratch_mkfs, and that > > > > is only called in tests after all the startup checks validate > > > > devices and mounts exist. i.e. see common/config::get_next_config() > > > > > > Well, I reproduced it easily enough again today (after taking a > > > snapshot of the VM) > > > by simply running generic/120 against NFS with SCRATCH_MNT not > > > specified in local.config > > > Dros also ran into this problem. > > > > You're right, I missed that _scratch_mkfs is also called by ./check, > > and if there's no SCRATCH_MNT set in local.config, only SCRATCH_DEV is > > set, _scratch_mkfs can be dangerous. > > As I asked earlier in this thread: why isn't get_next_config() > catching this? I think I see the problem, this patch catches the empty SCRATCH_MNT and works for me: eguan@dhcp-13-216:~/workspace/src/xfstests$ git diff diff --git a/common/config b/common/config index 1cb08c0..409f1b8 100644 --- a/common/config +++ b/common/config @@ -464,7 +464,7 @@ get_next_config() { exit 1 fi - if [ ! -z "$SCRATCH_MNT" -a ! -d "$SCRATCH_MNT" ]; then + if [ ! -z "$SCRATCH_MNT" -o ! -d "$SCRATCH_MNT" ]; then echo "common/config: Error: \$SCRATCH_MNT ($SCRATCH_MNT) is not a directory" exit 1 fi If it looks sane I will send out a patch. > > > I propose this patch, which skips _scratch_cleanup_files if called by check > > > > [root@hp-dl388eg8-01 xfstests]# git diff > > diff --git a/common/rc b/common/rc > > index 435f74f..254fb66 100644 > > --- a/common/rc > > +++ b/common/rc > > @@ -554,6 +554,11 @@ _mkfs_dev() > > # remove all files in $SCRATCH_MNT, useful when testing on NFS/CIFS > > _scratch_cleanup_files() > > { > > + # do nothing if called by check, variables are not fully valided yet > > + # SCRATCH_MNT can be empty, which is dangerous > > + if [ "$iam" == "check" ]; then > > + return > > + fi > > Again, this is the wrong place to try to fix this - we haven't fixed > the landmine that has left us running with an invalid config. IOWs, > by the time _scratch_mkfs is called from *anywhere* we should have > fully validated the environment to be correct and valid. Parsing and > validating the config we have loaded from the config file is the job > of get_next_config(), yes? Yes, that makes more sense, thanks for the explanation! Thanks, Eryu > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > -- > To unsubscribe from this list: send the line "unsubscribe fstests" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH v2 1/5] common: re-enable tests that require scratch dev on NFS 2014-11-17 6:06 ` Eryu Guan @ 2014-11-17 6:54 ` Dave Chinner 2014-11-17 14:53 ` Omer Zilberberg 0 siblings, 1 reply; 19+ messages in thread From: Dave Chinner @ 2014-11-17 6:54 UTC (permalink / raw) To: Eryu Guan Cc: Steve French, fstests, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org, Weston Andros Adamson On Mon, Nov 17, 2014 at 02:06:03PM +0800, Eryu Guan wrote: > On Mon, Nov 17, 2014 at 04:41:41PM +1100, Dave Chinner wrote: > > On Sat, Nov 15, 2014 at 01:35:33PM +0800, Eryu Guan wrote: > > > On Fri, Nov 14, 2014 at 11:02:50AM -0600, Steve French wrote: > > > > On Wed, Nov 12, 2014 at 9:33 PM, Dave Chinner <david@fromorbit.com> wrote: > > > > > On Wed, Nov 12, 2014 at 12:36:13PM -0600, Steve French wrote: > > > > >> On Fri, Oct 31, 2014 at 12:03 PM, Eryu Guan <eguan@redhat.com> wrote: > > > > >> > This commit disables tests requires scratch dev running on NFS > > > > >> > > > > > >> > c041421 xfstests: stop special casing nfs and udf > > > > >> > > > > > >> > Now re-enable them to get a larger test coverage on NFS. > > > > >> > > > > > >> > Signed-off-by: Eryu Guan <eguan@redhat.com> > > > > >> > --- > > > > >> > common/rc | 22 +++++++++++++++++++--- > > > > >> > 1 file changed, 19 insertions(+), 3 deletions(-) > > > > >> > > > > > >> > diff --git a/common/rc b/common/rc > > > > >> > index 747cf72..ae03712 100644 > > > > >> > --- a/common/rc > > > > >> > +++ b/common/rc > > > > >> > @@ -551,6 +551,14 @@ _mkfs_dev() > > > > >> > rm -f $tmp_dir.mkfserr $tmp_dir.mkfsstd > > > > >> > } > > > > >> > > > > > >> > +# remove all files in $SCRATCH_MNT, useful when testing on NFS/CIFS > > > > >> > +_scratch_cleanup_files() > > > > >> > +{ > > > > >> > + _scratch_mount > > > > >> > + rm -rf $SCRATCH_MNT/* > > > > >> > + _scratch_unmount > > > > >> > +} > > > > >> > > > > >> There should be a check to make sure SCRATCH_MNT exists before you > > > > >> wipe the whole disk .... > > > > >> > > > > >> so if no SCRATCH_MNT then this does rm -rf/* > > > > >> right ... (and wipes out your whole system ...) > > > > > > > > > > You can't get to that function until after all the checks that > > > > > SCRATCH_MNT exists. i.e. this happens during _scratch_mkfs, and that > > > > > is only called in tests after all the startup checks validate > > > > > devices and mounts exist. i.e. see common/config::get_next_config() > > > > > > > > Well, I reproduced it easily enough again today (after taking a > > > > snapshot of the VM) > > > > by simply running generic/120 against NFS with SCRATCH_MNT not > > > > specified in local.config > > > > Dros also ran into this problem. > > > > > > You're right, I missed that _scratch_mkfs is also called by ./check, > > > and if there's no SCRATCH_MNT set in local.config, only SCRATCH_DEV is > > > set, _scratch_mkfs can be dangerous. > > > > As I asked earlier in this thread: why isn't get_next_config() > > catching this? > > I think I see the problem, this patch catches the empty SCRATCH_MNT > and works for me: > > eguan@dhcp-13-216:~/workspace/src/xfstests$ git diff > diff --git a/common/config b/common/config > index 1cb08c0..409f1b8 100644 > --- a/common/config > +++ b/common/config > @@ -464,7 +464,7 @@ get_next_config() { > exit 1 > fi > > - if [ ! -z "$SCRATCH_MNT" -a ! -d "$SCRATCH_MNT" ]; then > + if [ ! -z "$SCRATCH_MNT" -o ! -d "$SCRATCH_MNT" ]; then "if (not an empty string OR not a directory)" That doesn't work if you define $SCRATCH_MNT - the directory check fails on an empty string. As it is, this isn't solving the underlying problem - that "empty string" check is to avoid failing configs that are not configured with a scratch device. i.e. if you define SCRATCH_MNT, it must be a directory. However, there's no check that if you define SCRATCH_DEV you've also defined a SCRATCH_MNT... IOWs, the underlying problem here is that SCRATCH_DEV is defined, but SCRATCH_MNT is not and we are not catching that issue. FYI, the setup script is used for checking these sorts of things. e.g. with an empty config: $ sudo ./setup Warning: need to define parameters for host test2 or set variables: TEST_DIR TEST_DEV $ And you'll note that it catches when we only have one of the two necessary TEST_D* variables set. However, even with XFS as the probe fstyp, it doesn't error out if I don't define a SCRATCH_MNT: $ sudo TEST_DEV=/dev/vda TEST_DIR=/mnt/test SCRATCH_DEV=/dev/vdb ./setup TEST: DIR=/mnt/test DEV=/dev/vda rt=[] log=[] TAPE: dev=[] rmt=[] rmtirix=[@] SCRATCH: MNT= DEV=/dev/vdb rt=[/dev/vdc] log=[/dev/vdd] VARIABLES: external=no largeblk=no fstyp=xfs large_scratch_dev=no attrsecure=no $ But it should fail with a sane error message indicating that we caught the invalid config and didn't leave check to fail randomly wiht some downstream error like: $ sudo TEST_DEV=/dev/vda TEST_DIR=/mnt/test SCRATCH_DEV=/dev/vdb ./check generic/120 .... check: failed to mount $SCRATCH_DEV using specified options Passed all 0 tests $ Another FYI: we can actually test any filesystem without a scratch device configured: $ sudo TEST_DEV=/dev/vda TEST_DIR=/mnt/test ./check generic/120 FSTYP -- xfs (non-debug) PLATFORM -- Linux/x86_64 test2 3.18.0-rc2-dgc+ generic/120 16s ... [not run] this test requires a valid $SCRATCH_DEV Not run: generic/120 Passed all 0 tests $ So, really, all we need to do is ensure that SCRATCH_DEV/SCRATCH_MNT are sanely configured... Cheers, Dave. -- Dave Chinner david@fromorbit.com ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v2 1/5] common: re-enable tests that require scratch dev on NFS 2014-11-17 6:54 ` Dave Chinner @ 2014-11-17 14:53 ` Omer Zilberberg 2014-11-17 20:22 ` Dave Chinner 0 siblings, 1 reply; 19+ messages in thread From: Omer Zilberberg @ 2014-11-17 14:53 UTC (permalink / raw) To: Dave Chinner, Eryu Guan Cc: Steve French, fstests, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org, Weston Andros Adamson > Another FYI: we can actually test any filesystem without a scratch > device configured: > > $ sudo TEST_DEV=/dev/vda TEST_DIR=/mnt/test ./check generic/120 > FSTYP -- xfs (non-debug) > PLATFORM -- Linux/x86_64 test2 3.18.0-rc2-dgc+ > > generic/120 16s ... [not run] this test requires a valid $SCRATCH_DEV > Not run: generic/120 > Passed all 0 tests > $ Please note that since commit 83ef157d, that is no longer true, because _require_test calls _is_block_dev with empty parameter, which prints usage: $ sudo TEST_DEV=/dev/sda TEST_DIR=/mnt/dev0 ./check generic/001 FSTYP -- ext4 PLATFORM -- Linux/x86_64 testvm 3.17.0 generic/001 7s ... - output mismatch (see /opt/xfstests/results//generic/001.out.bad) --- tests/generic/001.out 2014-09-10 11:04:44.249185592 +0300 +++ /opt/xfstests/results//generic/001.out.bad 2014-11-17 15:14:12.380061760 +0200 @@ -1,4 +1,5 @@ QA output created by 001 +Usage: _is_block_dev dev cleanup setup .................................... iter 1 chain ... check .................................... ... (Run 'diff -u tests/generic/001.out /opt/xfstests/results//generic/001.out.bad' to see the entire diff) Ran: generic/001 Failures: generic/001 Failed 1 of 1 tests Here's a patch to fix that: ---- Subject: [PATCH] _required_test: removed unneeded test for scratch_dev testing for scratch_dev in _required_test is unnecessary, since it is not required for these tests. Furthermore, if a scratch_dev is not given, all tests which are supposed to pass on test_dev fail, because _is_block_dev is given an empty string as scratch_dev, and prints usage. Signed-off-by: Omer Zilberberg <omzg@plexistor.com> --- common/rc | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/common/rc b/common/rc index d5e3aff..b863808 100644 --- a/common/rc +++ b/common/rc @@ -1104,7 +1104,7 @@ _require_scratch() } -# this test needs a test partition - check we're ok & unmount it +# this test needs a test partition - check we're ok & mount if necessary # _require_test() { @@ -1138,10 +1138,6 @@ _require_test() 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" -- 1.9.3 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH v2 1/5] common: re-enable tests that require scratch dev on NFS 2014-11-17 14:53 ` Omer Zilberberg @ 2014-11-17 20:22 ` Dave Chinner 2014-11-18 16:16 ` Omer Zilberberg 0 siblings, 1 reply; 19+ messages in thread From: Dave Chinner @ 2014-11-17 20:22 UTC (permalink / raw) To: Omer Zilberberg Cc: Eryu Guan, Steve French, fstests, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org, Weston Andros Adamson On Mon, Nov 17, 2014 at 04:53:50PM +0200, Omer Zilberberg wrote: > > Another FYI: we can actually test any filesystem without a scratch > > device configured: > > > > $ sudo TEST_DEV=/dev/vda TEST_DIR=/mnt/test ./check generic/120 > > FSTYP -- xfs (non-debug) > > PLATFORM -- Linux/x86_64 test2 3.18.0-rc2-dgc+ > > > > generic/120 16s ... [not run] this test requires a valid $SCRATCH_DEV > > Not run: generic/120 > > Passed all 0 tests > > $ > > Please note that since commit 83ef157d, that is no longer true, because _require_test calls _is_block_dev with empty parameter, which prints usage: > $ sudo TEST_DEV=/dev/sda TEST_DIR=/mnt/dev0 ./check generic/001 > FSTYP -- ext4 > PLATFORM -- Linux/x86_64 testvm 3.17.0 > > generic/001 7s ... - output mismatch (see /opt/xfstests/results//generic/001.out.bad) > --- tests/generic/001.out 2014-09-10 11:04:44.249185592 +0300 > +++ /opt/xfstests/results//generic/001.out.bad 2014-11-17 15:14:12.380061760 +0200 > @@ -1,4 +1,5 @@ > QA output created by 001 > +Usage: _is_block_dev dev > cleanup > setup .................................... > iter 1 chain ... check .................................... > ... > (Run 'diff -u tests/generic/001.out /opt/xfstests/results//generic/001.out.bad' to see the entire diff) > Ran: generic/001 > Failures: generic/001 > Failed 1 of 1 tests > > Here's a patch to fix that: > ---- > Subject: [PATCH] _required_test: removed unneeded test for scratch_dev > > testing for scratch_dev in _required_test is unnecessary, since it is > not required for these tests. Furthermore, if a scratch_dev is not given, > all tests which are supposed to pass on test_dev fail, because > _is_block_dev is given an empty string as scratch_dev, and prints usage. I'm beginning to sound like a broken record. Why isn't this *invalid config check* being done in the config parsing rather than on every test that requires a scratch or test device? i.e. removing the check is not the correct fix - checking it during config parsing means none of these checks need to be done in _require_test, nor in _require_scratch_nocheck. i.e. in get_next_config() we already know the FSTYP, so we should be checking that: a) TEST_DEV is valid for fstyp b) SCRATCH_DEV (if configured) is valid for fstyp c) TEST_DEV != SCRATCH_DEV if they both exist and fstyp indicates they should be block devices And then we can pretty much assume that they are valid everywhere else, and _require_scratch_nocheck() simply needs to check for a non-empty string... > Signed-off-by: Omer Zilberberg <omzg@plexistor.com> > --- > common/rc | 6 +----- > 1 file changed, 1 insertion(+), 5 deletions(-) > > diff --git a/common/rc b/common/rc > index d5e3aff..b863808 100644 > --- a/common/rc > +++ b/common/rc > @@ -1104,7 +1104,7 @@ _require_scratch() > } > > > -# this test needs a test partition - check we're ok & unmount it > +# this test needs a test partition - check we're ok & mount if necessary > # > _require_test() > { > @@ -1138,10 +1138,6 @@ _require_test() > 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" The patch is whitespace damaged. Please read: https://www.kernel.org/doc/Documentation/email-clients.txt and resend. Cheers, Dave. -- Dave Chinner david@fromorbit.com ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v2 1/5] common: re-enable tests that require scratch dev on NFS 2014-11-17 20:22 ` Dave Chinner @ 2014-11-18 16:16 ` Omer Zilberberg 0 siblings, 0 replies; 19+ messages in thread From: Omer Zilberberg @ 2014-11-18 16:16 UTC (permalink / raw) To: Dave Chinner Cc: Eryu Guan, Steve French, fstests, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org, Weston Andros Adamson On 11/17/2014 10:22 PM, Dave Chinner wrote: > On Mon, Nov 17, 2014 at 04:53:50PM +0200, Omer Zilberberg wrote: >>> Another FYI: we can actually test any filesystem without a scratch >>> device configured: >>> >>> $ sudo TEST_DEV=/dev/vda TEST_DIR=/mnt/test ./check generic/120 >>> FSTYP -- xfs (non-debug) >>> PLATFORM -- Linux/x86_64 test2 3.18.0-rc2-dgc+ >>> >>> generic/120 16s ... [not run] this test requires a valid $SCRATCH_DEV >>> Not run: generic/120 >>> Passed all 0 tests >>> $ >> >> Please note that since commit 83ef157d, that is no longer true, because _require_test calls _is_block_dev with empty parameter, which prints usage: >> $ sudo TEST_DEV=/dev/sda TEST_DIR=/mnt/dev0 ./check generic/001 >> FSTYP -- ext4 >> PLATFORM -- Linux/x86_64 testvm 3.17.0 >> >> generic/001 7s ... - output mismatch (see /opt/xfstests/results//generic/001.out.bad) >> --- tests/generic/001.out 2014-09-10 11:04:44.249185592 +0300 >> +++ /opt/xfstests/results//generic/001.out.bad 2014-11-17 15:14:12.380061760 +0200 >> @@ -1,4 +1,5 @@ >> QA output created by 001 >> +Usage: _is_block_dev dev >> cleanup >> setup .................................... >> iter 1 chain ... check .................................... >> ... >> (Run 'diff -u tests/generic/001.out /opt/xfstests/results//generic/001.out.bad' to see the entire diff) >> Ran: generic/001 >> Failures: generic/001 >> Failed 1 of 1 tests >> >> Here's a patch to fix that: >> ---- >> Subject: [PATCH] _required_test: removed unneeded test for scratch_dev >> >> testing for scratch_dev in _required_test is unnecessary, since it is >> not required for these tests. Furthermore, if a scratch_dev is not given, >> all tests which are supposed to pass on test_dev fail, because >> _is_block_dev is given an empty string as scratch_dev, and prints usage. > > I'm beginning to sound like a broken record. Why isn't this *invalid > config check* being done in the config parsing rather than on every > test that requires a scratch or test device? > > i.e. removing the check is not the correct fix - checking it during > config parsing means none of these checks need to be done in > _require_test, nor in _require_scratch_nocheck. > > i.e. in get_next_config() we already know the FSTYP, so we should > be checking that: > > a) TEST_DEV is valid for fstyp > b) SCRATCH_DEV (if configured) is valid for fstyp > c) TEST_DEV != SCRATCH_DEV if they both exist and fstyp > indicates they should be block devices > > And then we can pretty much assume that they are valid everywhere > else, and _require_scratch_nocheck() simply needs to check for a > non-empty string... > >> Signed-off-by: Omer Zilberberg <omzg@plexistor.com> >> --- >> common/rc | 6 +----- >> 1 file changed, 1 insertion(+), 5 deletions(-) >> >> diff --git a/common/rc b/common/rc >> index d5e3aff..b863808 100644 >> --- a/common/rc >> +++ b/common/rc >> @@ -1104,7 +1104,7 @@ _require_scratch() >> } >> >> >> -# this test needs a test partition - check we're ok & unmount it >> +# this test needs a test partition - check we're ok & mount if necessary >> # >> _require_test() >> { >> @@ -1138,10 +1138,6 @@ _require_test() >> 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" > > The patch is whitespace damaged. Please read: > > https://www.kernel.org/doc/Documentation/email-clients.txt Here's the patch resent with whitespace fixed, at least as a temporary solution... ---- Subject: [PATCH] _required_test: removed unneeded test for scratch_dev testing for scratch_dev in _required_test is unnecessary, since it is not required for these tests. Furthermore, if a scratch_dev is not given, all tests which are supposed to pass on test_dev fail, because _is_block_dev is given an empty string as scratch_dev, and prints usage. Signed-off-by: Omer Zilberberg <omzg@plexistor.com> --- common/rc | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/common/rc b/common/rc index d5e3aff..b863808 100644 --- a/common/rc +++ b/common/rc @@ -1104,7 +1104,7 @@ _require_scratch() } -# this test needs a test partition - check we're ok & unmount it +# this test needs a test partition - check we're ok & mount if necessary # _require_test() { @@ -1138,10 +1138,6 @@ _require_test() 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" ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH v2 1/5] common: re-enable tests that require scratch dev on NFS 2014-11-14 17:02 ` Steve French 2014-11-15 5:35 ` Eryu Guan @ 2014-11-17 5:34 ` Dave Chinner 1 sibling, 0 replies; 19+ messages in thread From: Dave Chinner @ 2014-11-17 5:34 UTC (permalink / raw) To: Steve French Cc: Eryu Guan, fstests, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org, Weston Andros Adamson On Fri, Nov 14, 2014 at 11:02:50AM -0600, Steve French wrote: > On Wed, Nov 12, 2014 at 9:33 PM, Dave Chinner <david@fromorbit.com> wrote: > > On Wed, Nov 12, 2014 at 12:36:13PM -0600, Steve French wrote: > >> On Fri, Oct 31, 2014 at 12:03 PM, Eryu Guan <eguan@redhat.com> wrote: > >> > This commit disables tests requires scratch dev running on NFS > >> > > >> > c041421 xfstests: stop special casing nfs and udf > >> > > >> > Now re-enable them to get a larger test coverage on NFS. > >> > > >> > Signed-off-by: Eryu Guan <eguan@redhat.com> > >> > --- > >> > common/rc | 22 +++++++++++++++++++--- > >> > 1 file changed, 19 insertions(+), 3 deletions(-) > >> > > >> > diff --git a/common/rc b/common/rc > >> > index 747cf72..ae03712 100644 > >> > --- a/common/rc > >> > +++ b/common/rc > >> > @@ -551,6 +551,14 @@ _mkfs_dev() > >> > rm -f $tmp_dir.mkfserr $tmp_dir.mkfsstd > >> > } > >> > > >> > +# remove all files in $SCRATCH_MNT, useful when testing on NFS/CIFS > >> > +_scratch_cleanup_files() > >> > +{ > >> > + _scratch_mount > >> > + rm -rf $SCRATCH_MNT/* > >> > + _scratch_unmount > >> > +} > >> > >> There should be a check to make sure SCRATCH_MNT exists before you > >> wipe the whole disk .... > >> > >> so if no SCRATCH_MNT then this does rm -rf/* > >> right ... (and wipes out your whole system ...) > > > > You can't get to that function until after all the checks that > > SCRATCH_MNT exists. i.e. this happens during _scratch_mkfs, and that > > is only called in tests after all the startup checks validate > > devices and mounts exist. i.e. see common/config::get_next_config() > > Well, I reproduced it easily enough again today (after taking a > snapshot of the VM) > by simply running generic/120 against NFS with SCRATCH_MNT not > specified in local.config > Dros also ran into this problem. tests/generic/120 does this: .... _require_scratch _scratch_mkfs .... So we call: _require_scratch _require_scratch_nocheck case "$FSTYP" in nfs*) echo $SCRATCH_DEV | grep -q ":/" > /dev/null 2>&1 if [ -z "$SCRATCH_DEV" -o "$?" != "0" ]; then _notrun "this test requires a valid \$SCRATCH_DEV" fi if [ ! -d "$SCRATCH_MNT" ]; then _notrun "this test requires a valid \$SCRATCH_MNT" fi If $SCRATCH_MNT is empty, then it should fail right there. An empty string gives: $ if [ ! -d "" ]; then > echo foo > fi foo $ before it gets anywhere near _scratch_mkfs. So, why isn't generic/120 aborting during the _require_scratch check? Cheers, Dave. -- Dave Chinner david@fromorbit.com ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 2/5] common: add _require_block_device() helper 2014-10-31 17:03 [PATCH v2 0/5] re-enable tests that require scratch dev on NFS Eryu Guan 2014-10-31 17:03 ` [PATCH v2 1/5] common: " Eryu Guan @ 2014-10-31 17:03 ` Eryu Guan 2014-10-31 17:03 ` [PATCH v2 3/5] common: skip atime related tests on NFS Eryu Guan ` (2 subsequent siblings) 4 siblings, 0 replies; 19+ messages in thread From: Eryu Guan @ 2014-10-31 17:03 UTC (permalink / raw) To: fstests; +Cc: linux-nfs, Eryu Guan Add _require_block_device() helper and use it in _require_dm_flakey() and generic/076. _require_dm_flakey() assumes $SCRATCH_DEV is a block device, now it can also be a NFS export. generic/076 does "cat $SCRATCH_DEV" which will fail when testing on NFS. Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Eryu Guan <eguan@redhat.com> --- common/rc | 15 +++++++++++++++ tests/generic/076 | 1 + 2 files changed, 16 insertions(+) diff --git a/common/rc b/common/rc index ae03712..ca8c4a2 100644 --- a/common/rc +++ b/common/rc @@ -1243,10 +1243,25 @@ _require_command() [ -n "$1" -a -x "$1" ] || _notrun "$_cmd utility required, skipped this test" } +# this test requires the device to be valid block device +# $1 - device +_require_block_device() +{ + if [ -z "$1" ]; then + echo "Usage: _require_block_device <dev>" 1>&2 + exit 1 + fi + if [ "`_is_block_dev $SCRATCH_DEV`" == "" ]; then + _notrun "require $1 to be valid block disk" + fi +} + # this test requires the device mapper flakey target # _require_dm_flakey() { + # require SCRATCH_DEV to be a valid block device + _require_block_device $SCRATCH_DEV _require_command $DMSETUP_PROG modprobe dm-flakey >/dev/null 2>&1 diff --git a/tests/generic/076 b/tests/generic/076 index 02af762..aa0aae0 100755 --- a/tests/generic/076 +++ b/tests/generic/076 @@ -56,6 +56,7 @@ _supported_fs generic _supported_os IRIX Linux _require_scratch +_require_block_device $SCRATCH_DEV echo "*** init fs" -- 1.9.3 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 3/5] common: skip atime related tests on NFS 2014-10-31 17:03 [PATCH v2 0/5] re-enable tests that require scratch dev on NFS Eryu Guan 2014-10-31 17:03 ` [PATCH v2 1/5] common: " Eryu Guan 2014-10-31 17:03 ` [PATCH v2 2/5] common: add _require_block_device() helper Eryu Guan @ 2014-10-31 17:03 ` Eryu Guan 2014-10-31 17:03 ` [PATCH v2 4/5] common: use _scratch_mount helper in _require_relatime() Eryu Guan 2014-10-31 17:04 ` [PATCH v2 5/5] generic/277: add _require_attrs Eryu Guan 4 siblings, 0 replies; 19+ messages in thread From: Eryu Guan @ 2014-10-31 17:03 UTC (permalink / raw) To: fstests; +Cc: linux-nfs, Eryu Guan >From nfs(5) we can know that atime related mount options have no effect on NFS mounts, so add _require_atime() helper to skip atime tests on NFS Signed-off-by: Eryu Guan <eguan@redhat.com> --- common/rc | 7 +++++++ tests/generic/003 | 1 + tests/generic/192 | 1 + 3 files changed, 9 insertions(+) diff --git a/common/rc b/common/rc index ca8c4a2..2d2b40f 100644 --- a/common/rc +++ b/common/rc @@ -2385,6 +2385,13 @@ _verify_reflink() || echo "$1 and $2 are not reflinks: different extents" } +_require_atime() +{ + if [ "$FSTYP" == "nfs" ]; then + _notrun "atime related mount options have no effect on NFS" + fi +} + _require_relatime() { _scratch_mkfs > /dev/null 2>&1 diff --git a/tests/generic/003 b/tests/generic/003 index 83d6f90..7ffd09a 100755 --- a/tests/generic/003 +++ b/tests/generic/003 @@ -47,6 +47,7 @@ _cleanup() _supported_fs generic _supported_os Linux _require_scratch +_require_atime _require_relatime rm -f $seqres.full diff --git a/tests/generic/192 b/tests/generic/192 index b2da358..5b6cfbc 100755 --- a/tests/generic/192 +++ b/tests/generic/192 @@ -54,6 +54,7 @@ is_noatime_set() { _supported_fs generic _supported_os Linux _require_test +_require_atime #delay=150 #delay=75 #delay=60 -- 1.9.3 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 4/5] common: use _scratch_mount helper in _require_relatime() 2014-10-31 17:03 [PATCH v2 0/5] re-enable tests that require scratch dev on NFS Eryu Guan ` (2 preceding siblings ...) 2014-10-31 17:03 ` [PATCH v2 3/5] common: skip atime related tests on NFS Eryu Guan @ 2014-10-31 17:03 ` Eryu Guan 2014-10-31 17:04 ` [PATCH v2 5/5] generic/277: add _require_attrs Eryu Guan 4 siblings, 0 replies; 19+ messages in thread From: Eryu Guan @ 2014-10-31 17:03 UTC (permalink / raw) To: fstests; +Cc: linux-nfs, Eryu Guan Change the way how _require_relatime() mount $SCRATCH_DEV, use _scratch_mount helper so $SCRATCH_DEV is mounted with selinux context, to avoid "same superblock, different selinux context" failure. Signed-off-by: Eryu Guan <eguan@redhat.com> --- common/rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/rc b/common/rc index 2d2b40f..b495ec1 100644 --- a/common/rc +++ b/common/rc @@ -2395,7 +2395,7 @@ _require_atime() _require_relatime() { _scratch_mkfs > /dev/null 2>&1 - _mount -t $FSTYP -o relatime $SCRATCH_DEV $SCRATCH_MNT || \ + _scratch_mount -o relatime || \ _notrun "relatime not supported by the current kernel" _scratch_unmount } -- 1.9.3 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 5/5] generic/277: add _require_attrs 2014-10-31 17:03 [PATCH v2 0/5] re-enable tests that require scratch dev on NFS Eryu Guan ` (3 preceding siblings ...) 2014-10-31 17:03 ` [PATCH v2 4/5] common: use _scratch_mount helper in _require_relatime() Eryu Guan @ 2014-10-31 17:04 ` Eryu Guan 4 siblings, 0 replies; 19+ messages in thread From: Eryu Guan @ 2014-10-31 17:04 UTC (permalink / raw) To: fstests; +Cc: linux-nfs, Eryu Guan NFS doesn't support attr yet, add _require_attrs in generic/277 to avoid failure when testing on NFS. Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Eryu Guan <eguan@redhat.com> --- tests/generic/277 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/generic/277 b/tests/generic/277 index 8461ad9..39ebdc3 100755 --- a/tests/generic/277 +++ b/tests/generic/277 @@ -38,11 +38,13 @@ trap "_cleanup ; exit \$status" 0 1 2 3 15 # get standard environment, filters and checks . ./common/rc . ./common/filter +. ./common/attr # real QA test starts here _supported_fs generic _supported_os Linux _require_scratch +_require_attrs _scratch_mkfs > /dev/null 2>&1 _scratch_mount -- 1.9.3 ^ permalink raw reply related [flat|nested] 19+ messages in thread
end of thread, other threads:[~2014-11-18 16:21 UTC | newest] Thread overview: 19+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-10-31 17:03 [PATCH v2 0/5] re-enable tests that require scratch dev on NFS Eryu Guan 2014-10-31 17:03 ` [PATCH v2 1/5] common: " Eryu Guan 2014-11-10 2:12 ` Dave Chinner 2014-11-10 4:05 ` Eryu Guan 2014-11-12 18:36 ` Steve French 2014-11-13 3:33 ` Dave Chinner 2014-11-14 17:02 ` Steve French 2014-11-15 5:35 ` Eryu Guan 2014-11-17 5:41 ` Dave Chinner 2014-11-17 6:06 ` Eryu Guan 2014-11-17 6:54 ` Dave Chinner 2014-11-17 14:53 ` Omer Zilberberg 2014-11-17 20:22 ` Dave Chinner 2014-11-18 16:16 ` Omer Zilberberg 2014-11-17 5:34 ` Dave Chinner 2014-10-31 17:03 ` [PATCH v2 2/5] common: add _require_block_device() helper Eryu Guan 2014-10-31 17:03 ` [PATCH v2 3/5] common: skip atime related tests on NFS Eryu Guan 2014-10-31 17:03 ` [PATCH v2 4/5] common: use _scratch_mount helper in _require_relatime() Eryu Guan 2014-10-31 17:04 ` [PATCH v2 5/5] generic/277: add _require_attrs Eryu Guan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox