diff mbox

common/rc: fix detection of already mounted test device

Message ID 20161215071931.31651-1-eguan@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Eryu Guan Dec. 15, 2016, 7:19 a.m. UTC
I saw this failure in overlayfs testing:

+$SCRATCH_DEV=/mnt/ovl/scratch is mounted but not on $SCRATCH_MNT=/mnt/xfstests/mnt2 - aborting
+Already mounted result:
+/dev/sda5 on /mnt/ovl/scratch type xfs (rw,relatime,seclabel,attr2,inode64,logbsize=256k,sunit=512,swidth=1536,noquota)

Because we grep for TEST_DEV and SCRATCH_DEV in mount output to see
if test device is already mounted, and report failure if device is
not mounted at desired mount point, but in the case of overlayfs
testing these "test device"s are directories and may have other real
devices mounted there.

Fix it by checking TEST_DEV and SCRATCH_DEV at the beginning of
mount entries.

Signed-off-by: Eryu Guan <eguan@redhat.com>
---
 common/rc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Amir Goldstein Dec. 15, 2016, 7:54 a.m. UTC | #1
On Thu, Dec 15, 2016 at 9:19 AM, Eryu Guan <eguan@redhat.com> wrote:
> I saw this failure in overlayfs testing:
>
> +$SCRATCH_DEV=/mnt/ovl/scratch is mounted but not on $SCRATCH_MNT=/mnt/xfstests/mnt2 - aborting
> +Already mounted result:
> +/dev/sda5 on /mnt/ovl/scratch type xfs (rw,relatime,seclabel,attr2,inode64,logbsize=256k,sunit=512,swidth=1536,noquota)
>
> Because we grep for TEST_DEV and SCRATCH_DEV in mount output to see
> if test device is already mounted, and report failure if device is
> not mounted at desired mount point, but in the case of overlayfs
> testing these "test device"s are directories and may have other real
> devices mounted there.
>
> Fix it by checking TEST_DEV and SCRATCH_DEV at the beginning of
> mount entries.
>
> Signed-off-by: Eryu Guan <eguan@redhat.com>
> ---
>  common/rc | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/common/rc b/common/rc
> index 26d715d..6fcab17 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -1363,7 +1363,7 @@ _require_scratch_nocheck()
>      # mounted?
>      # Note that we use -F here so grep doesn't try to interpret an NFS over
>      # IPv6 server as a regular expression.
> -    mount_rec=`_mount | grep -F $SCRATCH_DEV`
> +    mount_rec=`_mount | grep -F "^$SCRATCH_DEV"`

Are you sure?
A manual test I did -F treats ^ as regular char in string and fails to
grep the entry

How about grep -F "$SCRATCH_DEV on "` ?


>      if [ "$mount_rec" ]
>      then
>          # if it's mounted, make sure its on $SCRATCH_MNT
> @@ -1448,7 +1448,7 @@ _require_test()
>      # mounted?
>      # Note that we use -F here so grep doesn't try to interpret an NFS over
>      # IPv6 server as a regular expression.
> -    mount_rec=`_mount | grep -F $TEST_DEV`
> +    mount_rec=`_mount | grep -F "^$TEST_DEV"`
>      if [ "$mount_rec" ]
>      then
>          # if it's mounted, make sure its on $TEST_DIR
> --
> 2.9.3
>
> --
> 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
--
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
Eryu Guan Dec. 15, 2016, 8:23 a.m. UTC | #2
On Thu, Dec 15, 2016 at 09:54:07AM +0200, Amir Goldstein wrote:
> On Thu, Dec 15, 2016 at 9:19 AM, Eryu Guan <eguan@redhat.com> wrote:
> > I saw this failure in overlayfs testing:
> >
> > +$SCRATCH_DEV=/mnt/ovl/scratch is mounted but not on $SCRATCH_MNT=/mnt/xfstests/mnt2 - aborting
> > +Already mounted result:
> > +/dev/sda5 on /mnt/ovl/scratch type xfs (rw,relatime,seclabel,attr2,inode64,logbsize=256k,sunit=512,swidth=1536,noquota)
> >
> > Because we grep for TEST_DEV and SCRATCH_DEV in mount output to see
> > if test device is already mounted, and report failure if device is
> > not mounted at desired mount point, but in the case of overlayfs
> > testing these "test device"s are directories and may have other real
> > devices mounted there.
> >
> > Fix it by checking TEST_DEV and SCRATCH_DEV at the beginning of
> > mount entries.
> >
> > Signed-off-by: Eryu Guan <eguan@redhat.com>
> > ---
> >  common/rc | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/common/rc b/common/rc
> > index 26d715d..6fcab17 100644
> > --- a/common/rc
> > +++ b/common/rc
> > @@ -1363,7 +1363,7 @@ _require_scratch_nocheck()
> >      # mounted?
> >      # Note that we use -F here so grep doesn't try to interpret an NFS over
> >      # IPv6 server as a regular expression.
> > -    mount_rec=`_mount | grep -F $SCRATCH_DEV`
> > +    mount_rec=`_mount | grep -F "^$SCRATCH_DEV"`
> 
> Are you sure?
> A manual test I did -F treats ^ as regular char in string and fails to
> grep the entry

What have I done.. I really need some good rest.

> 
> How about grep -F "$SCRATCH_DEV on "` ?

Will revise. Thanks for the review!

Eryu

> 
> 
> >      if [ "$mount_rec" ]
> >      then
> >          # if it's mounted, make sure its on $SCRATCH_MNT
> > @@ -1448,7 +1448,7 @@ _require_test()
> >      # mounted?
> >      # Note that we use -F here so grep doesn't try to interpret an NFS over
> >      # IPv6 server as a regular expression.
> > -    mount_rec=`_mount | grep -F $TEST_DEV`
> > +    mount_rec=`_mount | grep -F "^$TEST_DEV"`
> >      if [ "$mount_rec" ]
> >      then
> >          # if it's mounted, make sure its on $TEST_DIR
> > --
> > 2.9.3
> >
> > --
> > 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
--
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
diff mbox

Patch

diff --git a/common/rc b/common/rc
index 26d715d..6fcab17 100644
--- a/common/rc
+++ b/common/rc
@@ -1363,7 +1363,7 @@  _require_scratch_nocheck()
     # mounted?
     # Note that we use -F here so grep doesn't try to interpret an NFS over
     # IPv6 server as a regular expression.
-    mount_rec=`_mount | grep -F $SCRATCH_DEV`
+    mount_rec=`_mount | grep -F "^$SCRATCH_DEV"`
     if [ "$mount_rec" ]
     then
         # if it's mounted, make sure its on $SCRATCH_MNT
@@ -1448,7 +1448,7 @@  _require_test()
     # mounted?
     # Note that we use -F here so grep doesn't try to interpret an NFS over
     # IPv6 server as a regular expression.
-    mount_rec=`_mount | grep -F $TEST_DEV`
+    mount_rec=`_mount | grep -F "^$TEST_DEV"`
     if [ "$mount_rec" ]
     then
         # if it's mounted, make sure its on $TEST_DIR