diff mbox series

generic/050: fix xfsquota configuration failures

Message ID 20191127041538.GH6212@magnolia (mailing list archive)
State Accepted
Headers show
Series generic/050: fix xfsquota configuration failures | expand

Commit Message

Darrick J. Wong Nov. 27, 2019, 4:15 a.m. UTC
From: Darrick J. Wong <darrick.wong@oracle.com>

The new 'xfsquota' configuration for generic/050 doesn't filter out
SCRATCH_MNT properly and seems to be missing an error message in the
golden output.  Fix both of these problems.

Fixes: e088479871 ("generic/050: Handle xfs quota special case with different output")
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 tests/generic/050              |    6 +++---
 tests/generic/050.out.xfsquota |    5 +++--
 2 files changed, 6 insertions(+), 5 deletions(-)

Comments

Jan Kara Nov. 27, 2019, 12:06 p.m. UTC | #1
On Tue 26-11-19 20:15:38, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> The new 'xfsquota' configuration for generic/050 doesn't filter out
> SCRATCH_MNT properly and seems to be missing an error message in the
> golden output.  Fix both of these problems.
> 
> Fixes: e088479871 ("generic/050: Handle xfs quota special case with different output")
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>

Umm, I can see how I messed up the SCRATCH_MNT filtering and didn't notice
- thanks for fixing that. But the error message should not be there. The
previous mount completely failed so we end up touching file on the parent
filesystem which succeeds (well, unless the parent filesystem is read-only
as well). So to avoid this obscure behavior, we should add something like
(untested):

diff --git a/tests/generic/050 b/tests/generic/050
index cf2b93814267..593e2e69bf9a 100755
--- a/tests/generic/050
+++ b/tests/generic/050
@@ -59,8 +59,10 @@ blockdev --setro $SCRATCH_DEV
 #
 echo "mounting read-only block device:"
 _try_scratch_mount 2>&1 | _filter_ro_mount
-echo "touching file on read-only filesystem (should fail)"
-touch $SCRATCH_MNT/foo 2>&1 | _filter_scratch
+if [ "${PIPESTATUS[0]}" -eq 0 ]; then
+       echo "touching file on read-only filesystem (should fail)"
+       touch $SCRATCH_MNT/foo 2>&1 | _filter_scratch
+fi

and update xfsquota output accordingly...

								Honza
> @@ -1,8 +1,9 @@
>  QA output created by 050
>  setting device read-only
>  mounting read-only block device:
> -mount: /mnt-scratch: permission denied
> +mount: SCRATCH_MNT: permission denied
>  touching file on read-only filesystem (should fail)
> +touch: cannot touch 'SCRATCH_MNT/foo': Read-only file system
>  unmounting read-only filesystem
>  umount: SCRATCH_DEV: not mounted
>  setting device read-write
Darrick J. Wong Nov. 27, 2019, 3:41 p.m. UTC | #2
On Wed, Nov 27, 2019 at 01:06:41PM +0100, Jan Kara wrote:
> On Tue 26-11-19 20:15:38, Darrick J. Wong wrote:
> > From: Darrick J. Wong <darrick.wong@oracle.com>
> > 
> > The new 'xfsquota' configuration for generic/050 doesn't filter out
> > SCRATCH_MNT properly and seems to be missing an error message in the
> > golden output.  Fix both of these problems.
> > 
> > Fixes: e088479871 ("generic/050: Handle xfs quota special case with different output")
> > Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> 
> Umm, I can see how I messed up the SCRATCH_MNT filtering and didn't notice
> - thanks for fixing that. But the error message should not be there. The
> previous mount completely failed so we end up touching file on the parent
> filesystem which succeeds (well, unless the parent filesystem is read-only
> as well).

Heh, yes, I deliberately make the test dir and scratch mounts readonly
so that mount failures show up as errors.  Usually I catch it, but this
time I saw the previous line and was too hasty.

> So to avoid this obscure behavior, we should add something like
> (untested):
> 
> diff --git a/tests/generic/050 b/tests/generic/050
> index cf2b93814267..593e2e69bf9a 100755
> --- a/tests/generic/050
> +++ b/tests/generic/050
> @@ -59,8 +59,10 @@ blockdev --setro $SCRATCH_DEV
>  #
>  echo "mounting read-only block device:"
>  _try_scratch_mount 2>&1 | _filter_ro_mount
> -echo "touching file on read-only filesystem (should fail)"
> -touch $SCRATCH_MNT/foo 2>&1 | _filter_scratch
> +if [ "${PIPESTATUS[0]}" -eq 0 ]; then
> +       echo "touching file on read-only filesystem (should fail)"
> +       touch $SCRATCH_MNT/foo 2>&1 | _filter_scratch
> +fi
> 
> and update xfsquota output accordingly...

Ok.  I'll do that.

--D

> 
> 								Honza
> > @@ -1,8 +1,9 @@
> >  QA output created by 050
> >  setting device read-only
> >  mounting read-only block device:
> > -mount: /mnt-scratch: permission denied
> > +mount: SCRATCH_MNT: permission denied
> >  touching file on read-only filesystem (should fail)
> > +touch: cannot touch 'SCRATCH_MNT/foo': Read-only file system
> >  unmounting read-only filesystem
> >  umount: SCRATCH_DEV: not mounted
> >  setting device read-write
> -- 
> Jan Kara <jack@suse.com>
> SUSE Labs, CR
diff mbox series

Patch

diff --git a/tests/generic/050 b/tests/generic/050
index cf2b9381..6f536aff 100755
--- a/tests/generic/050
+++ b/tests/generic/050
@@ -58,7 +58,7 @@  blockdev --setro $SCRATCH_DEV
 # Mount it, and make sure we can't write to it, and we can unmount it again
 #
 echo "mounting read-only block device:"
-_try_scratch_mount 2>&1 | _filter_ro_mount
+_try_scratch_mount 2>&1 | _filter_ro_mount | _filter_scratch
 echo "touching file on read-only filesystem (should fail)"
 touch $SCRATCH_MNT/foo 2>&1 | _filter_scratch
 
@@ -92,7 +92,7 @@  blockdev --setro $SCRATCH_DEV
 # -o norecovery is used.
 #
 echo "mounting filesystem that needs recovery on a read-only device:"
-_try_scratch_mount 2>&1 | _filter_ro_mount
+_try_scratch_mount 2>&1 | _filter_ro_mount | _filter_scratch
 
 echo "unmounting read-only filesystem"
 _scratch_unmount 2>&1 | _filter_scratch | _filter_ending_dot
@@ -103,7 +103,7 @@  _scratch_unmount 2>&1 | _filter_scratch | _filter_ending_dot
 # data recovery hack.
 #
 echo "mounting filesystem with -o norecovery on a read-only device:"
-_try_scratch_mount -o norecovery 2>&1 | _filter_ro_mount
+_try_scratch_mount -o norecovery 2>&1 | _filter_ro_mount | _filter_scratch
 echo "unmounting read-only filesystem"
 _scratch_unmount 2>&1 | _filter_scratch | _filter_ending_dot
 
diff --git a/tests/generic/050.out.xfsquota b/tests/generic/050.out.xfsquota
index f204bd2f..10e395da 100644
--- a/tests/generic/050.out.xfsquota
+++ b/tests/generic/050.out.xfsquota
@@ -1,8 +1,9 @@ 
 QA output created by 050
 setting device read-only
 mounting read-only block device:
-mount: /mnt-scratch: permission denied
+mount: SCRATCH_MNT: permission denied
 touching file on read-only filesystem (should fail)
+touch: cannot touch 'SCRATCH_MNT/foo': Read-only file system
 unmounting read-only filesystem
 umount: SCRATCH_DEV: not mounted
 setting device read-write
@@ -17,7 +18,7 @@  mount: cannot mount device read-only
 unmounting read-only filesystem
 umount: SCRATCH_DEV: not mounted
 mounting filesystem with -o norecovery on a read-only device:
-mount: /mnt-scratch: permission denied
+mount: SCRATCH_MNT: permission denied
 unmounting read-only filesystem
 umount: SCRATCH_DEV: not mounted
 setting device read-write