xfs
[Top] [All Lists]

Re: [PATCH 1/5] xfstests 062: fix support for ext4 and SELinux

To: Eric Sandeen <sandeen@xxxxxxxxxxx>
Subject: Re: [PATCH 1/5] xfstests 062: fix support for ext4 and SELinux
From: Lukas Czerner <lczerner@xxxxxxxxxx>
Date: Mon, 16 Apr 2012 09:03:57 +0200 (CEST)
Cc: tmarek@xxxxxxxxxx, xfs@xxxxxxxxxxx, lczerner@xxxxxxxxxx, dchinner@xxxxxxxxxx
In-reply-to: <4F8B881E.2040806@xxxxxxxxxxx>
References: <1334310586-2281-1-git-send-email-tmarek@xxxxxxxxxx> <4F8B881E.2040806@xxxxxxxxxxx>
User-agent: Alpine 2.00 (LFD 1167 2008-08-23)
On Sun, 15 Apr 2012, Eric Sandeen wrote:

> On 4/13/12 4:49 AM, tmarek@xxxxxxxxxx wrote:
> > From: Tom Marek <tmarek@xxxxxxxxxx>
> > 
> > Tests number 062 was supposed to work with ext4 fs but there were some
> > problems in it - Tests haven't considered existence of lost+found directory 
> > in
> > ext4. Also when scratch was mounted with SELinux context test failed because
> > fgetattr returns SELinux extended attributes. And when fgetattr is run with
> > recursive flag it's output might change between file systems due to 
> > different
> > file ordering. Fix this by sorting the output manually. Also all lines
> > containing SELinux and lost+found were removed from output.
> > 
> > Signed-off-by: Tom Marek <tmarek@xxxxxxxxxx>
> 
> Have you run the latest xfstests?  This looks a lot like:
> 
> commit 2fb1c931a6090f646afa44e4ce3f1f9815af9067
> Author: Eric Sandeen <sandeen@xxxxxxxxxxx>
> Date:   Fri Jan 27 12:28:20 2012 -0600
> 
>     062: Sort recursive getfattr output
>     
>     Test 062 was made "generic" a while back, but it fails on any filesystem
>     which returns getfattr -R results (aka readdir results) in something
>     other than inode-order.
>     
>     With a little awk-fu we can sort the records from getfattr -R so that
>     the output is the same for xfs as well as ext4, etc.
>     
>     Also filter out lost+found which extN creates at mkfs time, but
>     some other filesystems do not.
>     
>     Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx>
>     Reviewed-by: Christoph Hellwig <hch@xxxxxx>
> 
> -Eric

Hi Eric,

I have latest xfstests from git://oss.sgi.com/xfs/cmds/xfstests which I
found here http://xfs.org/index.php/Getting_the_latest_source_code but
your commit is not there. I can see it on the list though, so this patch
can be dropped.

Thanks!
-Lukas

> 
> > Reviewed-by: Lukas Czerner <lczerner@xxxxxxxxxx>
> > ---
> >  062     |   50 ++++++++++++++++++++++++++---------
> >  062.out |   90 
> > +++++++++++++++++++++++++++++++-------------------------------
> >  2 files changed, 82 insertions(+), 58 deletions(-)
> > 
> > diff --git a/062 b/062
> > index f666e1b..116296b 100755
> > --- a/062
> > +++ b/062
> > @@ -46,6 +46,30 @@ _cleanup()
> >  }
> >  trap "_cleanup; exit \$status" 0 1 2 3 15
> >  
> > +# remove "security.selinux=..." because it is not installed on all systems
> > +# and it not relevant to this test
> > +_remove_selinux(){
> > +   egrep -v '^(selinux|security\.selinux)'
> > +}
> > +
> > +# sort getfattr output and remove entries containing only selinux 
> > attributes
> > +_sort_getfattr(){
> > +   awk '
> > +   BEGIN{
> > +           RS=""
> > +   }
> > +   {
> > +           a[FNR]=$0
> > +   }
> > +   END{
> > +           n = asort(a);
> > +           for(i = 1; i <= n; ++i){
> > +                   if (a[i] ~ /# file: 
> > SCRATCH_MNT[^\n]*\nsecurity.selinux[^\n]*\n/)
> > +                           print a[i] "\n"
> > +           }
> > +   }'
> > +}
> > +
> >  getfattr()
> >  {
> >      $GETFATTR_PROG --absolute-names -dh $@ 2>&1 | _filter_scratch
> > @@ -67,7 +91,7 @@ _create_test_bed()
> >     mknod $SCRATCH_MNT/dev/c c 0 0
> >     mknod $SCRATCH_MNT/dev/p p
> >     # sanity check
> > -   find $SCRATCH_MNT | LC_COLLATE=POSIX sort | _filter_scratch
> > +   find $SCRATCH_MNT | LC_COLLATE=POSIX sort | _filter_scratch | grep -v 
> > "lost+found"
> >  }
> >  
> >  # real QA test starts here
> > @@ -102,7 +126,7 @@ for nsp in $ATTR_MODES; do
> >             echo "*** set/get one initially empty attribute"
> >      
> >             setfattr -h -n $nsp.name $SCRATCH_MNT/$inode
> > -           getfattr -m $nsp $SCRATCH_MNT/$inode
> > +           getfattr -m $nsp $SCRATCH_MNT/$inode | _remove_selinux
> >  
> >             echo "*** overwrite empty, set several new attributes"
> >             setfattr -h -n $nsp.name -v 0xbabe $SCRATCH_MNT/$inode
> > @@ -110,33 +134,33 @@ for nsp in $ATTR_MODES; do
> >             setfattr -h -n $nsp.name3 -v 0xdeface $SCRATCH_MNT/$inode
> >  
> >             echo "*** fetch several attribute names and values (hex)"
> > -           getfattr -m $nsp -e hex $SCRATCH_MNT/$inode
> > +           getfattr -m $nsp -e hex $SCRATCH_MNT/$inode | _remove_selinux
> >  
> >             echo "*** fetch several attribute names and values (base64)"
> > -           getfattr -m $nsp -e base64 $SCRATCH_MNT/$inode
> > +           getfattr -m $nsp -e base64 $SCRATCH_MNT/$inode | _remove_selinux
> >             
> >             echo "*** shrink value of an existing attribute"
> >             setfattr -h -n $nsp.name2 -v 0xdeaf $SCRATCH_MNT/$inode
> > -           getfattr -m $nsp -e hex $SCRATCH_MNT/$inode
> > +           getfattr -m $nsp -e hex $SCRATCH_MNT/$inode | _remove_selinux
> >  
> >             echo "*** grow value of existing attribute"
> >             setfattr -h -n $nsp.name2 -v 0xdecade $SCRATCH_MNT/$inode
> > -           getfattr -m $nsp -e hex $SCRATCH_MNT/$inode
> > +           getfattr -m $nsp -e hex $SCRATCH_MNT/$inode | _remove_selinux
> >             
> >             echo "*** set an empty value for second attribute"
> >             setfattr -h -n $nsp.name2 $SCRATCH_MNT/$inode
> > -           getfattr -m $nsp -n $nsp.name2 $SCRATCH_MNT/$inode 2>&1 | 
> > invalid_attribute_filter
> > +           getfattr -m $nsp -n $nsp.name2 $SCRATCH_MNT/$inode 2>&1 | 
> > invalid_attribute_filter | _remove_selinux
> >  
> >             echo "*** overwrite empty value"
> >             setfattr -h -n $nsp.name2 -v 0xcafe $SCRATCH_MNT/$inode
> > -           getfattr -m $nsp -e hex -n $nsp.name2 $SCRATCH_MNT/$inode 2>&1 
> > | invalid_attribute_filter
> > +           getfattr -m $nsp -e hex -n $nsp.name2 $SCRATCH_MNT/$inode 2>&1 
> > | invalid_attribute_filter | _remove_selinux
> >  
> >             echo "*** remove attribute"
> >             setfattr -h -x $nsp.name2 $SCRATCH_MNT/$inode
> > -           getfattr -m $nsp -e hex -n $nsp.name2 $SCRATCH_MNT/$inode 2>&1 
> > | invalid_attribute_filter
> > +           getfattr -m $nsp -e hex -n $nsp.name2 $SCRATCH_MNT/$inode 2>&1 
> > | invalid_attribute_filter | _remove_selinux
> >  
> >             echo "*** final list (strings, type=$inode, nsp=$nsp)"
> > -           getfattr -m '.' -e hex $SCRATCH_MNT/$inode
> > +           getfattr -m '.' -e hex $SCRATCH_MNT/$inode | _sort_getfattr | 
> > _remove_selinux
> >     
> >     done
> >  done
> > @@ -160,18 +184,18 @@ _extend_test_bed()
> >     # whack a symlink in the middle, just to be difficult
> >     ln -s $SCRATCH_MNT/here/up $SCRATCH_MNT/descend/and
> >     # dump out our new starting point
> > -   find $SCRATCH_MNT | LC_COLLATE=POSIX sort | _filter_scratch
> > +   find $SCRATCH_MNT | LC_COLLATE=POSIX sort | _filter_scratch | grep -v 
> > "lost+found"
> >  }
> >  
> >  _extend_test_bed
> >  
> >  echo
> >  echo "*** directory descent with us following symlinks"
> > -getfattr -h -L -R -m '.' -e hex $SCRATCH_MNT
> > +getfattr -h -L -R -m '.' -e hex $SCRATCH_MNT | _sort_getfattr | 
> > _remove_selinux
> >  
> >  echo
> >  echo "*** directory descent without following symlinks"
> > -getfattr -h -P -R -m '.' -e hex $SCRATCH_MNT
> > +getfattr -h -P -R -m '.' -e hex $SCRATCH_MNT | _sort_getfattr | 
> > _remove_selinux
> >  
> >  
> >  # 
> > diff --git a/062.out b/062.out
> > index 699254a..8cc3c65 100644
> > --- a/062.out
> > +++ b/062.out
> > @@ -508,21 +508,21 @@ SCRATCH_MNT/lnk
> >  SCRATCH_MNT/reg
> >  
> >  *** directory descent with us following symlinks
> > -# file: SCRATCH_MNT/reg
> > -trusted.name=0xbabe
> > -trusted.name3=0xdeface
> > -user.name=0xbabe
> > -user.name3=0xdeface
> > +# file: SCRATCH_MNT/descend
> > +user.1=0x3233
> > +user.x=0x797a
> >  
> > -# file: SCRATCH_MNT/dir
> > -trusted.name=0xbabe
> > -trusted.name3=0xdeface
> > -user.name=0xbabe
> > -user.name3=0xdeface
> > +# file: SCRATCH_MNT/descend/and/ascend
> > +trusted.9=0x3837
> > +trusted.a=0x6263
> >  
> > -# file: SCRATCH_MNT/lnk
> > -trusted.name=0xbabe
> > -trusted.name3=0xdeface
> > +# file: SCRATCH_MNT/descend/down
> > +user.1=0x3233
> > +user.x=0x797a
> > +
> > +# file: SCRATCH_MNT/descend/down/here
> > +user.1=0x3233
> > +user.x=0x797a
> >  
> >  # file: SCRATCH_MNT/dev/b
> >  trusted.name=0xbabe
> > @@ -536,6 +536,12 @@ trusted.name3=0xdeface
> >  trusted.name=0xbabe
> >  trusted.name3=0xdeface
> >  
> > +# file: SCRATCH_MNT/dir
> > +trusted.name=0xbabe
> > +trusted.name3=0xdeface
> > +user.name=0xbabe
> > +user.name3=0xdeface
> > +
> >  # file: SCRATCH_MNT/here
> >  trusted.9=0x3837
> >  trusted.a=0x6263
> > @@ -548,6 +554,18 @@ trusted.a=0x6263
> >  trusted.9=0x3837
> >  trusted.a=0x6263
> >  
> > +# file: SCRATCH_MNT/lnk
> > +trusted.name=0xbabe
> > +trusted.name3=0xdeface
> > +
> > +# file: SCRATCH_MNT/reg
> > +trusted.name=0xbabe
> > +trusted.name3=0xdeface
> > +user.name=0xbabe
> > +user.name3=0xdeface
> > +
> > +
> > +*** directory descent without following symlinks
> >  # file: SCRATCH_MNT/descend
> >  user.1=0x3233
> >  user.x=0x797a
> > @@ -560,28 +578,6 @@ user.x=0x797a
> >  user.1=0x3233
> >  user.x=0x797a
> >  
> > -# file: SCRATCH_MNT/descend/and/ascend
> > -trusted.9=0x3837
> > -trusted.a=0x6263
> > -
> > -
> > -*** directory descent without following symlinks
> > -# file: SCRATCH_MNT/reg
> > -trusted.name=0xbabe
> > -trusted.name3=0xdeface
> > -user.name=0xbabe
> > -user.name3=0xdeface
> > -
> > -# file: SCRATCH_MNT/dir
> > -trusted.name=0xbabe
> > -trusted.name3=0xdeface
> > -user.name=0xbabe
> > -user.name3=0xdeface
> > -
> > -# file: SCRATCH_MNT/lnk
> > -trusted.name=0xbabe
> > -trusted.name3=0xdeface
> > -
> >  # file: SCRATCH_MNT/dev/b
> >  trusted.name=0xbabe
> >  trusted.name3=0xdeface
> > @@ -594,6 +590,12 @@ trusted.name3=0xdeface
> >  trusted.name=0xbabe
> >  trusted.name3=0xdeface
> >  
> > +# file: SCRATCH_MNT/dir
> > +trusted.name=0xbabe
> > +trusted.name3=0xdeface
> > +user.name=0xbabe
> > +user.name3=0xdeface
> > +
> >  # file: SCRATCH_MNT/here
> >  trusted.9=0x3837
> >  trusted.a=0x6263
> > @@ -606,17 +608,15 @@ trusted.a=0x6263
> >  trusted.9=0x3837
> >  trusted.a=0x6263
> >  
> > -# file: SCRATCH_MNT/descend
> > -user.1=0x3233
> > -user.x=0x797a
> > -
> > -# file: SCRATCH_MNT/descend/down
> > -user.1=0x3233
> > -user.x=0x797a
> > +# file: SCRATCH_MNT/lnk
> > +trusted.name=0xbabe
> > +trusted.name3=0xdeface
> >  
> > -# file: SCRATCH_MNT/descend/down/here
> > -user.1=0x3233
> > -user.x=0x797a
> > +# file: SCRATCH_MNT/reg
> > +trusted.name=0xbabe
> > +trusted.name3=0xdeface
> > +user.name=0xbabe
> > +user.name3=0xdeface
> >  
> >  
> >  
> 
> 

-- 

<Prev in Thread] Current Thread [Next in Thread>