xfstests: add _require_attrs

Add a new helper to check if extended attributes are supported.  It
errors out if any of the attr tools are not found, or if a filesystem
does not support setting attributes.

Remove the opencoded checks for the attr tools from various tests
now that we do them in common code.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Alex Elder <aelder@sgi.com>
This commit is contained in:
Christoph Hellwig
2010-10-21 21:11:48 +02:00
parent f1436346b4
commit 5411ceb991
16 changed files with 66 additions and 7 deletions
+2 -2
View File
@@ -35,6 +35,7 @@ trap "_cleanup; rm -f $tmp.* $testfile; exit \$status" 0 1 2 3 15
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.attr
_cleanup()
{
@@ -82,8 +83,7 @@ _attr_list()
_supported_fs xfs udf
_supported_os Linux
[ -n $ATTR_PROG ] || _notrun "attr is not installed"
[ -n $GETFATTR_PROG ] || _notrun "getfattr is not installed"
_require_attrs
_setup_testdir
+2 -3
View File
@@ -33,6 +33,7 @@ status=0 # success is the default!
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.attr
_cleanup()
{
@@ -76,10 +77,8 @@ _getfattr()
_supported_fs xfs
_supported_os Linux
[ -n $ATTR_PROG ] || _notrun "attr is not installed"
[ -n $GETFATTR_PROG ] || _notrun "getfattr is not installed"
_require_scratch
_require_attrs
rm -f $seq.full
umount $SCRATCH_DEV >/dev/null 2>&1
+3
View File
@@ -35,6 +35,7 @@ status=1 # failure is the default!
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.attr
_cleanup()
{
@@ -120,6 +121,8 @@ _supported_fs xfs udf nfs
_supported_os Linux
_require_scratch
_require_attrs
rm -f $tmp.backup1 $tmp.backup2 $seq.full
# real QA test starts here
+3
View File
@@ -36,11 +36,14 @@ trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
. ./common.rc
. ./common.filter
. ./common.dump
. ./common.attr
# real QA test starts here
_supported_fs xfs
_supported_os Linux
_require_attrs
# create files with EAs
_create_dumpdir_fill_ea
+1
View File
@@ -42,6 +42,7 @@ _supported_fs xfs
_supported_os Linux
_need_to_be_root
_require_attrs
_require_acls
_require_scratch
+3
View File
@@ -42,11 +42,14 @@ _cleanup()
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.attr
# real QA test starts here
_supported_fs generic
_supported_os IRIX Linux
_require_attrs
_setup_testdir
$FSSTRESS_PROG \
+1 -1
View File
@@ -52,7 +52,7 @@ _supported_os Linux
[ ! -d $filler ] && _notrun "No directory to source files from"
_require_scratch
_require_attrs
_require_acls
_require_user
+3
View File
@@ -44,11 +44,14 @@ _cleanup()
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.attr
_supported_fs xfs
_supported_os Linux
_require_attrs
_require_scratch
[ -x $timmutable ] || _notrun "t_immutable was not built for this platform"
# real QA test starts here
+2
View File
@@ -60,6 +60,8 @@ _filefilter()
_supported_fs generic
_supported_os IRIX
_require_attrs
[ -x $runas ] || _notrun "$runas executable not found"
rm -f $seq.full
+2
View File
@@ -308,11 +308,13 @@ _test_dirstress()
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.attr
_supported_fs xfs
_supported_os IRIX
_require_scratch
_require_attrs
_need_to_be_root
rm -f $here/$seq.full
+2
View File
@@ -95,11 +95,13 @@ _filter()
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.attr
_supported_fs xfs
_supported_os IRIX
_require_scratch
_require_attrs
rm -f $here/$seq.full
+2
View File
@@ -48,6 +48,7 @@ _cleanup()
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.attr
# real QA test starts here
_supported_fs xfs
@@ -55,6 +56,7 @@ _supported_os IRIX Linux
_setup_testdir
_require_scratch
_require_attrs
rm -f $seq.full
umount $SCRATCH_DEV >/dev/null 2>&1
+3
View File
@@ -43,6 +43,7 @@ _cleanup()
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.attr
# real QA test starts here
@@ -51,7 +52,9 @@ _cleanup()
# Modify as appropriate.
_supported_fs xfs
_supported_os IRIX Linux
_require_scratch
_require_attrs
export MKFS_OPTIONS="-i size=512,attr=2"
_scratch_mkfs_xfs > /dev/null 2>&1
+4
View File
@@ -139,13 +139,17 @@ _changeto_attr1()
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.attr
# real QA test starts here
# Modify as appropriate.
_supported_fs xfs
_supported_os Linux
_require_scratch
_require_attrs
rm -f $seq.full
_scratch_mkfs -i attr=2,size=512 -l lazy-count=1 >/dev/null 2>&1
+5 -1
View File
@@ -51,11 +51,15 @@ _filter_version()
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.attr
# real QA test starts here
_require_scratch
_supported_fs xfs
_supported_os Linux
_require_scratch
_require_attrs
rm -f $seq.full
# lazysb and attr2 are in features2 and will require morebitsbit on
+28
View File
@@ -148,5 +148,33 @@ _list_acl()
ls -dD $file | _acl_filter_id
}
_require_attrs()
{
[ -n $ATTR_PROG ] || _notrun "attr command not found"
[ -n $GETFATTR_PROG ] || _notrun "getfattr command not found"
[ -n $SETFATTR_PROG ] || _notrun "setfattr command not found"
#
# Test if chacl is able to write an attribute on the target filesystems.
# On really old kernels the system calls might not be implemented at all,
# but the more common case is that the tested filesystem simply doesn't
# support attributes. Note that we can't simply list attributes as
# various security modules generate synthetic attributes not actually
# stored on disk.
#
touch $TEST_DIR/syscalltest
attr -s "user.xfstests" -V "attr" /mnt/test/ > $TEST_DIR/syscalltest.out 2>&1
cat $TEST_DIR/syscalltest.out >> $here/$seq.full
if grep -q 'Function not implemented' $TEST_DIR/syscalltest.out; then
_notrun "kernel does not support attrs"
fi
if grep -q 'Operation not supported' $TEST_DIR/syscalltest.out; then
_notrun "attrs not supported by this filesystem type: $FSTYP"
fi
rm -f $TEST_DIR/syscalltest.out
}
# make sure this script returns success
/bin/true