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>
125 lines
2.7 KiB
Bash
Executable File
125 lines
2.7 KiB
Bash
Executable File
#! /bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
# Copyright (c) 2018 Huawei. All Rights Reserved.
|
|
#
|
|
# FS QA Test No. 056
|
|
#
|
|
# Test fsck.overlay how to deal with impure xattr in overlayfs.
|
|
#
|
|
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
|
|
_supported_fs overlay
|
|
_supported_os Linux
|
|
_require_scratch_nocheck
|
|
_require_attrs trusted
|
|
_require_command "$FSCK_OVERLAY_PROG" fsck.overlay
|
|
|
|
OVL_XATTR_IMPURE_VAL=y
|
|
|
|
# remove all files from previous tests
|
|
_scratch_mkfs
|
|
|
|
# Create a redirect directory
|
|
make_redirect_dir()
|
|
{
|
|
local target=$1
|
|
local value=$2
|
|
|
|
mkdir -p $target
|
|
$SETFATTR_PROG -n $OVL_XATTR_REDIRECT -v $value $target
|
|
}
|
|
|
|
# Remove impure xattr
|
|
remove_impure()
|
|
{
|
|
local target=$1
|
|
|
|
$SETFATTR_PROG -x $OVL_XATTR_IMPURE $target
|
|
}
|
|
|
|
# Check impure xattr
|
|
check_impure()
|
|
{
|
|
local target=$1
|
|
|
|
value=$(_getfattr --absolute-names --only-values -n \
|
|
$OVL_XATTR_IMPURE $target)
|
|
|
|
[[ "$value" == "$OVL_XATTR_IMPURE_VAL" ]] || echo "Missing impure xattr"
|
|
}
|
|
|
|
# Create test directories
|
|
lowerdir=$OVL_BASE_SCRATCH_MNT/lower
|
|
lowerdir2=$OVL_BASE_SCRATCH_MNT/lower2
|
|
upperdir=$OVL_BASE_SCRATCH_MNT/upper
|
|
workdir=$OVL_BASE_SCRATCH_MNT/workdir
|
|
|
|
make_test_dirs()
|
|
{
|
|
rm -rf $lowerdir $lowerdir2 $upperdir $workdir
|
|
mkdir -p $lowerdir $lowerdir2 $upperdir $workdir
|
|
}
|
|
|
|
# Test missing impure xattr in directory which has origin targets, should fix
|
|
echo "+ Missing impure"
|
|
make_test_dirs
|
|
mkdir $lowerdir/{testdir1,testdir2}
|
|
mkdir $upperdir/{testdir1,testdir2}
|
|
touch $lowerdir/testdir1/foo
|
|
mkdir $lowerdir/testdir2/subdir
|
|
_overlay_scratch_mount_dirs $lowerdir $upperdir $workdir
|
|
touch $SCRATCH_MNT/testdir1/foo
|
|
touch $SCRATCH_MNT/testdir2/subdir
|
|
$UMOUNT_PROG $SCRATCH_MNT
|
|
remove_impure $upperdir/testdir1
|
|
remove_impure $upperdir/testdir2
|
|
|
|
_overlay_fsck_expect $FSCK_NONDESTRUCT $lowerdir $upperdir $workdir -p
|
|
check_impure $upperdir/testdir1
|
|
check_impure $upperdir/testdir2
|
|
|
|
# Test missing impure xattr in directory which has redirect directories,
|
|
# should fix
|
|
echo "+ Missing impure(2)"
|
|
make_test_dirs
|
|
mkdir $lowerdir/origin
|
|
make_redirect_dir $upperdir/testdir/subdir "/origin"
|
|
|
|
_overlay_fsck_expect $FSCK_NONDESTRUCT $lowerdir $upperdir $workdir -p
|
|
check_impure $upperdir/testdir
|
|
|
|
# Test missing impure xattr in directory which has merge directories,
|
|
# should fix
|
|
echo "+ Missing impure(3)"
|
|
make_test_dirs
|
|
mkdir $lowerdir/testdir $upperdir/testdir
|
|
|
|
_overlay_fsck_expect $FSCK_NONDESTRUCT $lowerdir $upperdir $workdir -p
|
|
check_impure $upperdir
|
|
|
|
# success, all done
|
|
status=0
|
|
exit
|