diff mbox series

common/filter: add _filter_stat

Message ID 20201208020442.16307-1-jencce.kernel@gmail.com (mailing list archive)
State New, archived
Headers show
Series common/filter: add _filter_stat | expand

Commit Message

Murphy Zhou Dec. 8, 2020, 2:04 a.m. UTC
New stat(2) starts to use statx(7) call. Then if file does not
exist, it breaks golden output like this:

-stat: cannot stat 'SCRATCH_MNT/xxx': No such file or directory
+stat: cannot statx 'SCRATCH_MNT/xxx': No such file or directory

Add this filter to fix it, and add this filter to testcases that
need it.

Signed-off-by: Murphy Zhou <jencce.kernel@gmail.com>
---
 common/filter     | 6 ++++++
 tests/generic/397 | 6 +++---
 tests/generic/435 | 2 +-
 tests/generic/440 | 2 +-
 tests/xfs/348     | 2 +-
 5 files changed, 12 insertions(+), 6 deletions(-)

Comments

Eryu Guan Dec. 20, 2020, 2:40 p.m. UTC | #1
On Tue, Dec 08, 2020 at 10:04:42AM +0800, Murphy Zhou wrote:
> New stat(2) starts to use statx(7) call. Then if file does not
> exist, it breaks golden output like this:
> 
> -stat: cannot stat 'SCRATCH_MNT/xxx': No such file or directory
> +stat: cannot statx 'SCRATCH_MNT/xxx': No such file or directory
> 
> Add this filter to fix it, and add this filter to testcases that
> need it.
> 
> Signed-off-by: Murphy Zhou <jencce.kernel@gmail.com>
> ---
>  common/filter     | 6 ++++++
>  tests/generic/397 | 6 +++---
>  tests/generic/435 | 2 +-
>  tests/generic/440 | 2 +-
>  tests/xfs/348     | 2 +-
>  5 files changed, 12 insertions(+), 6 deletions(-)
> 
> diff --git a/common/filter b/common/filter
> index a8b3882f..6fbf70c2 100644
> --- a/common/filter
> +++ b/common/filter
> @@ -510,6 +510,12 @@ _filter_mv()
>  	sed -e "s/^renamed //"
>  }
>  
> +# New stat(2) uses statx(7)
> +_filter_stat()
> +{
> +	sed -e "s/cannot statx/cannot stat/"
> +}
> +

Thanks for the fix! But I think maybe it's better to filter 'stat' to
'statx' (and update the affected .out files accordingly), so that when
all distros pick up the new behavior we may eventually remove this
filter, or at least we won't see failures if new tests forget to use
_filter_stat, as no-one is testing with old distros.

Thanks,
Eryu

>  _filter_lostfound()
>  {
>  	sed -e '/^lost+found$/d'
> diff --git a/tests/generic/397 b/tests/generic/397
> index 97111555..bb4de31c 100755
> --- a/tests/generic/397
> +++ b/tests/generic/397
> @@ -83,8 +83,8 @@ _unlink_session_encryption_key $keydesc
>  _scratch_cycle_mount
>  
>  # Check that unencrypted names aren't there
> -stat $SCRATCH_MNT/edir/empty |& _filter_scratch
> -stat $SCRATCH_MNT/edir/symlink |& _filter_scratch
> +stat $SCRATCH_MNT/edir/empty |& _filter_stat |& _filter_scratch
> +stat $SCRATCH_MNT/edir/symlink |& _filter_stat |& _filter_scratch
>  
>  # Check that the correct numbers of files and subdirectories are there
>  ls $SCRATCH_MNT/edir | wc -l
> @@ -106,7 +106,7 @@ ln -s foo $SCRATCH_MNT/edir/0123456789abcdef |& _filter_scratch
>  
>  # Delete the encrypted directory (should succeed)
>  rm -r $SCRATCH_MNT/edir
> -stat $SCRATCH_MNT/edir |& _filter_scratch
> +stat $SCRATCH_MNT/edir |& _filter_stat |& _filter_scratch
>  
>  # success, all done
>  status=0
> diff --git a/tests/generic/435 b/tests/generic/435
> index 9f54c6c4..71c5a3f0 100755
> --- a/tests/generic/435
> +++ b/tests/generic/435
> @@ -73,7 +73,7 @@ _scratch_cycle_mount
>  # and ext4 reported a "Structure needs cleaning" error when removing files.
>  find $SCRATCH_MNT/edir/ -type f | xargs stat -c %i | sort | uniq | wc -l
>  rm -rf $SCRATCH_MNT/edir |& head -n 10
> -stat $SCRATCH_MNT/edir |& _filter_scratch
> +stat $SCRATCH_MNT/edir |& _filter_stat |& _filter_scratch
>  
>  # success, all done
>  status=0
> diff --git a/tests/generic/440 b/tests/generic/440
> index d775f1e0..8a81d60a 100755
> --- a/tests/generic/440
> +++ b/tests/generic/440
> @@ -87,7 +87,7 @@ _scratch_cycle_mount
>  cat $SCRATCH_MNT/edir2/link
>  exec 3< $SCRATCH_MNT/edir2/link # pin inode with cached key in memory
>  _unlink_session_encryption_key $keydesc
> -stat $SCRATCH_MNT/edir/file |& _filter_scratch
> +stat $SCRATCH_MNT/edir/file |& _filter_stat |& _filter_scratch
>  cat "$(find $SCRATCH_MNT/edir/ -type f)"
>  exec 3>&-
>  
> diff --git a/tests/xfs/348 b/tests/xfs/348
> index 194d9f99..208382fb 100755
> --- a/tests/xfs/348
> +++ b/tests/xfs/348
> @@ -112,7 +112,7 @@ for dt in $dtypes; do
>  		rm -f $tmp.stat.err
>  		ftype=$(stat --printf=%F $testdir/$file 2>$tmp.stat.err)
>  		if [ -s $tmp.stat.err ]; then
> -			cat $tmp.stat.err
> +			cat $tmp.stat.err | _filter_stat
>  		else
>  			echo "stat: '$testdir/$file' is a $ftype"
>  			# Verify that readlink of a file posing as a symlink
> -- 
> 2.20.1
Murphy Zhou Dec. 22, 2020, 7:05 a.m. UTC | #2
On Sun, Dec 20, 2020 at 10:40:41PM +0800, Eryu Guan wrote:
> On Tue, Dec 08, 2020 at 10:04:42AM +0800, Murphy Zhou wrote:
> > New stat(2) starts to use statx(7) call. Then if file does not
> > exist, it breaks golden output like this:
> > 
> > -stat: cannot stat 'SCRATCH_MNT/xxx': No such file or directory
> > +stat: cannot statx 'SCRATCH_MNT/xxx': No such file or directory
> > 
> > Add this filter to fix it, and add this filter to testcases that
> > need it.
> > 
> > Signed-off-by: Murphy Zhou <jencce.kernel@gmail.com>
> > ---
> >  common/filter     | 6 ++++++
> >  tests/generic/397 | 6 +++---
> >  tests/generic/435 | 2 +-
> >  tests/generic/440 | 2 +-
> >  tests/xfs/348     | 2 +-
> >  5 files changed, 12 insertions(+), 6 deletions(-)
> > 
> > diff --git a/common/filter b/common/filter
> > index a8b3882f..6fbf70c2 100644
> > --- a/common/filter
> > +++ b/common/filter
> > @@ -510,6 +510,12 @@ _filter_mv()
> >  	sed -e "s/^renamed //"
> >  }
> >  
> > +# New stat(2) uses statx(7)
> > +_filter_stat()
> > +{
> > +	sed -e "s/cannot statx/cannot stat/"
> > +}
> > +
> 
> Thanks for the fix! But I think maybe it's better to filter 'stat' to
> 'statx' (and update the affected .out files accordingly), so that when
> all distros pick up the new behavior we may eventually remove this
> filter, or at least we won't see failures if new tests forget to use
> _filter_stat, as no-one is testing with old distros.

Agree and Okay, this makes sense.

Thanks very much for the reviewing!

> 
> Thanks,
> Eryu
> 
> >  _filter_lostfound()
> >  {
> >  	sed -e '/^lost+found$/d'
> > diff --git a/tests/generic/397 b/tests/generic/397
> > index 97111555..bb4de31c 100755
> > --- a/tests/generic/397
> > +++ b/tests/generic/397
> > @@ -83,8 +83,8 @@ _unlink_session_encryption_key $keydesc
> >  _scratch_cycle_mount
> >  
> >  # Check that unencrypted names aren't there
> > -stat $SCRATCH_MNT/edir/empty |& _filter_scratch
> > -stat $SCRATCH_MNT/edir/symlink |& _filter_scratch
> > +stat $SCRATCH_MNT/edir/empty |& _filter_stat |& _filter_scratch
> > +stat $SCRATCH_MNT/edir/symlink |& _filter_stat |& _filter_scratch
> >  
> >  # Check that the correct numbers of files and subdirectories are there
> >  ls $SCRATCH_MNT/edir | wc -l
> > @@ -106,7 +106,7 @@ ln -s foo $SCRATCH_MNT/edir/0123456789abcdef |& _filter_scratch
> >  
> >  # Delete the encrypted directory (should succeed)
> >  rm -r $SCRATCH_MNT/edir
> > -stat $SCRATCH_MNT/edir |& _filter_scratch
> > +stat $SCRATCH_MNT/edir |& _filter_stat |& _filter_scratch
> >  
> >  # success, all done
> >  status=0
> > diff --git a/tests/generic/435 b/tests/generic/435
> > index 9f54c6c4..71c5a3f0 100755
> > --- a/tests/generic/435
> > +++ b/tests/generic/435
> > @@ -73,7 +73,7 @@ _scratch_cycle_mount
> >  # and ext4 reported a "Structure needs cleaning" error when removing files.
> >  find $SCRATCH_MNT/edir/ -type f | xargs stat -c %i | sort | uniq | wc -l
> >  rm -rf $SCRATCH_MNT/edir |& head -n 10
> > -stat $SCRATCH_MNT/edir |& _filter_scratch
> > +stat $SCRATCH_MNT/edir |& _filter_stat |& _filter_scratch
> >  
> >  # success, all done
> >  status=0
> > diff --git a/tests/generic/440 b/tests/generic/440
> > index d775f1e0..8a81d60a 100755
> > --- a/tests/generic/440
> > +++ b/tests/generic/440
> > @@ -87,7 +87,7 @@ _scratch_cycle_mount
> >  cat $SCRATCH_MNT/edir2/link
> >  exec 3< $SCRATCH_MNT/edir2/link # pin inode with cached key in memory
> >  _unlink_session_encryption_key $keydesc
> > -stat $SCRATCH_MNT/edir/file |& _filter_scratch
> > +stat $SCRATCH_MNT/edir/file |& _filter_stat |& _filter_scratch
> >  cat "$(find $SCRATCH_MNT/edir/ -type f)"
> >  exec 3>&-
> >  
> > diff --git a/tests/xfs/348 b/tests/xfs/348
> > index 194d9f99..208382fb 100755
> > --- a/tests/xfs/348
> > +++ b/tests/xfs/348
> > @@ -112,7 +112,7 @@ for dt in $dtypes; do
> >  		rm -f $tmp.stat.err
> >  		ftype=$(stat --printf=%F $testdir/$file 2>$tmp.stat.err)
> >  		if [ -s $tmp.stat.err ]; then
> > -			cat $tmp.stat.err
> > +			cat $tmp.stat.err | _filter_stat
> >  		else
> >  			echo "stat: '$testdir/$file' is a $ftype"
> >  			# Verify that readlink of a file posing as a symlink
> > -- 
> > 2.20.1
diff mbox series

Patch

diff --git a/common/filter b/common/filter
index a8b3882f..6fbf70c2 100644
--- a/common/filter
+++ b/common/filter
@@ -510,6 +510,12 @@  _filter_mv()
 	sed -e "s/^renamed //"
 }
 
+# New stat(2) uses statx(7)
+_filter_stat()
+{
+	sed -e "s/cannot statx/cannot stat/"
+}
+
 _filter_lostfound()
 {
 	sed -e '/^lost+found$/d'
diff --git a/tests/generic/397 b/tests/generic/397
index 97111555..bb4de31c 100755
--- a/tests/generic/397
+++ b/tests/generic/397
@@ -83,8 +83,8 @@  _unlink_session_encryption_key $keydesc
 _scratch_cycle_mount
 
 # Check that unencrypted names aren't there
-stat $SCRATCH_MNT/edir/empty |& _filter_scratch
-stat $SCRATCH_MNT/edir/symlink |& _filter_scratch
+stat $SCRATCH_MNT/edir/empty |& _filter_stat |& _filter_scratch
+stat $SCRATCH_MNT/edir/symlink |& _filter_stat |& _filter_scratch
 
 # Check that the correct numbers of files and subdirectories are there
 ls $SCRATCH_MNT/edir | wc -l
@@ -106,7 +106,7 @@  ln -s foo $SCRATCH_MNT/edir/0123456789abcdef |& _filter_scratch
 
 # Delete the encrypted directory (should succeed)
 rm -r $SCRATCH_MNT/edir
-stat $SCRATCH_MNT/edir |& _filter_scratch
+stat $SCRATCH_MNT/edir |& _filter_stat |& _filter_scratch
 
 # success, all done
 status=0
diff --git a/tests/generic/435 b/tests/generic/435
index 9f54c6c4..71c5a3f0 100755
--- a/tests/generic/435
+++ b/tests/generic/435
@@ -73,7 +73,7 @@  _scratch_cycle_mount
 # and ext4 reported a "Structure needs cleaning" error when removing files.
 find $SCRATCH_MNT/edir/ -type f | xargs stat -c %i | sort | uniq | wc -l
 rm -rf $SCRATCH_MNT/edir |& head -n 10
-stat $SCRATCH_MNT/edir |& _filter_scratch
+stat $SCRATCH_MNT/edir |& _filter_stat |& _filter_scratch
 
 # success, all done
 status=0
diff --git a/tests/generic/440 b/tests/generic/440
index d775f1e0..8a81d60a 100755
--- a/tests/generic/440
+++ b/tests/generic/440
@@ -87,7 +87,7 @@  _scratch_cycle_mount
 cat $SCRATCH_MNT/edir2/link
 exec 3< $SCRATCH_MNT/edir2/link # pin inode with cached key in memory
 _unlink_session_encryption_key $keydesc
-stat $SCRATCH_MNT/edir/file |& _filter_scratch
+stat $SCRATCH_MNT/edir/file |& _filter_stat |& _filter_scratch
 cat "$(find $SCRATCH_MNT/edir/ -type f)"
 exec 3>&-
 
diff --git a/tests/xfs/348 b/tests/xfs/348
index 194d9f99..208382fb 100755
--- a/tests/xfs/348
+++ b/tests/xfs/348
@@ -112,7 +112,7 @@  for dt in $dtypes; do
 		rm -f $tmp.stat.err
 		ftype=$(stat --printf=%F $testdir/$file 2>$tmp.stat.err)
 		if [ -s $tmp.stat.err ]; then
-			cat $tmp.stat.err
+			cat $tmp.stat.err | _filter_stat
 		else
 			echo "stat: '$testdir/$file' is a $ftype"
 			# Verify that readlink of a file posing as a symlink