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
> >
> >
> >
>
>
--
|