Files
apfstests/tests/generic/449
T
Frank van der Linden 9860712610 fstests: explicitly specify xattr namespace
Explicitly specify the xattr namespace required for tests.
This allows tests to be skipped correctly for filesystems
that don't support all xattr namespaces.

This changes all tests that require anything other than
the "user" xattr namespace. When called without arguments
as before, _require_attrs() still defaults to the "user"
namespace, so those tests do not need to be changed.

Signed-off-by: Frank van der Linden <fllinden@amazon.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
2020-09-14 00:45:14 +08:00

90 lines
2.0 KiB
Bash
Executable File

#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2017 Ernesto A. Fernandez. All Rights Reserved.
#
# FS QA Test 449
#
# Fill the device and set as many extended attributes to a file as
# possible. Then call setfacl on it and, if this fails for lack of
# space, test that the permissions remain the same.
#
seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"
here=`pwd`
tmp=/tmp/$$
status=1 # failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
_cleanup()
{
cd /
rm -f $tmp.*
}
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
. ./common/attr
# remove previous $seqres.full before test
rm -f $seqres.full
# real QA test starts here
# Modify as appropriate.
_supported_fs generic
_supported_os Linux
_require_scratch
_require_test
_require_acls
_require_attrs trusted
_scratch_mkfs_sized $((256 * 1024 * 1024)) >> $seqres.full 2>&1
_scratch_mount || _fail "mount failed"
TFILE=$SCRATCH_MNT/testfile.$seq
# Create the test file and choose its permissions
touch $TFILE
chmod u+rwx $TFILE
chmod go-rwx $TFILE
# Try to run out of space so setfacl will fail
$XFS_IO_PROG -c "pwrite 0 256m" $TFILE >>$seqres.full 2>&1
i=1
# Setting acls on an xfs filesystem will succeed even after running out of
# space for user attributes. Use trusted attributes
while $SETFATTR_PROG -n trusted.$i -v $(perl -e 'print "a"x1024') $TFILE &>/dev/null; do
((++i))
done
j=1
ret=0
while [ $ret -eq 0 ]; do
ret=1
while [ $j -le 1000 ]; do
# On btrfs, setfattr will sometimes fail when free space is
# low, long before it's actually exhausted. Insist until it
# fails consistently.
$SETFATTR_PROG -n trusted.$i"x"$j $TFILE &>/dev/null
ret=$(( $ret && $? ))
((++j))
done
j=1
((++i))
done
if setfacl -m m:r $TFILE &>/dev/null; then
# setfacl succeeded, so the test was meaningless
# The filesystem might still have an issue
_notrun "$FSTYP succeeds in setting acls despite running out of space for user attrs"
fi
# Since setfacl failed, the permissions should not have changed
stat -c %A $TFILE
status=0
exit