All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eryu Guan <eguan@redhat.com>
To: Steve French <smfrench@gmail.com>
Cc: Dave Chinner <david@fromorbit.com>,
	fstests@vger.kernel.org,
	"linux-nfs@vger.kernel.org" <linux-nfs@vger.kernel.org>,
	"linux-cifs@vger.kernel.org" <linux-cifs@vger.kernel.org>,
	Weston Andros Adamson <dros@primarydata.com>
Subject: Re: [PATCH v2 1/5] common: re-enable tests that require scratch dev on NFS
Date: Sat, 15 Nov 2014 13:35:33 +0800	[thread overview]
Message-ID: <20141115053533.GK2863@dhcp-13-216.nay.redhat.com> (raw)
In-Reply-To: <CAH2r5msD-FDDvUL5Gt+7Fzt-tvduS93sxM-PG9dZjvk0ED53QA@mail.gmail.com>

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

WARNING: multiple messages have this Message-ID (diff)
From: Eryu Guan <eguan-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Steve French <smfrench-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Dave Chinner <david-FqsqvQoI3Ljby3iVrkZq2A@public.gmane.org>,
	fstests-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	"linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Weston Andros Adamson
	<dros-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>
Subject: Re: [PATCH v2 1/5] common: re-enable tests that require scratch dev on NFS
Date: Sat, 15 Nov 2014 13:35:33 +0800	[thread overview]
Message-ID: <20141115053533.GK2863@dhcp-13-216.nay.redhat.com> (raw)
In-Reply-To: <CAH2r5msD-FDDvUL5Gt+7Fzt-tvduS93sxM-PG9dZjvk0ED53QA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

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-FqsqvQoI3Ljby3iVrkZq2A@public.gmane.org> 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-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 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-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> >> > ---
> >> >  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

  reply	other threads:[~2014-11-15  5:35 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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-12 18:36     ` Steve French
2014-11-13  3:33     ` Dave Chinner
2014-11-13  3:33       ` Dave Chinner
2014-11-14 17:02       ` Steve French
2014-11-14 17:02         ` Steve French
2014-11-15  5:35         ` Eryu Guan [this message]
2014-11-15  5:35           ` Eryu Guan
2014-11-17  5:41           ` Dave Chinner
2014-11-17  5:41             ` Dave Chinner
2014-11-17  6:06             ` Eryu Guan
2014-11-17  6:06               ` Eryu Guan
2014-11-17  6:54               ` Dave Chinner
2014-11-17  6:54                 ` Dave Chinner
2014-11-17 14:53                 ` Omer Zilberberg
2014-11-17 14:53                   ` Omer Zilberberg
2014-11-17 20:22                   ` Dave Chinner
2014-11-17 20:22                     ` Dave Chinner
2014-11-18 16:16                     ` Omer Zilberberg
2014-11-18 16:16                       ` Omer Zilberberg
2014-11-17  5:34         ` Dave Chinner
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
     [not found] ` <1414775040-4051-1-git-send-email-eguan-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-11-02 20:52   ` Fwd: [PATCH v2 0/5] re-enable tests that require scratch dev on NFS Steve French

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to=20141115053533.GK2863@dhcp-13-216.nay.redhat.com \
    --to=eguan@redhat.com \
    --cc=david@fromorbit.com \
    --cc=dros@primarydata.com \
    --cc=fstests@vger.kernel.org \
    --cc=linux-cifs@vger.kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=smfrench@gmail.com \
    /path/to/YOUR_REPLY

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

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is 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.