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> 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 -- 1.7.7.6 _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs