mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
9860712610
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>
90 lines
2.0 KiB
Bash
Executable File
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
|