mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
26966520cc
Move test 103's _filter_ln to common.filter and make it more generic (not depending on 103's pathnames). TBH I've lost my children's treasury of ln failure messages, so I'm not sure this catches all variants; it's hard to work backwards from the existing sed script to what the various outputs were. This works for me but might need more tweaking on other systems. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Ben Myers <bpm@sgi.com>
104 lines
2.6 KiB
Bash
Executable File
104 lines
2.6 KiB
Bash
Executable File
#! /bin/bash
|
|
# FS QA Test No. 103
|
|
#
|
|
# Exercise the XFS nosymlinks inode flag
|
|
#
|
|
#-----------------------------------------------------------------------
|
|
# Copyright (c) 2000-2005 Silicon Graphics, Inc. All Rights Reserved.
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License as
|
|
# published by the Free Software Foundation.
|
|
#
|
|
# This program is distributed in the hope that it would be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write the Free Software Foundation,
|
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
#
|
|
#-----------------------------------------------------------------------
|
|
#
|
|
# creator
|
|
owner=nathans@sgi.com
|
|
|
|
seq=`basename $0`
|
|
echo "QA output created by $seq"
|
|
|
|
here=`pwd`
|
|
tmp=/tmp/$$
|
|
status=1 # failure is the default!
|
|
trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
|
|
|
|
# get standard environment, filters and checks
|
|
. ./common.rc
|
|
. ./common.filter
|
|
|
|
_create_scratch()
|
|
{
|
|
echo "*** mkfs"
|
|
if ! _scratch_mkfs_xfs >$tmp.out 2>&1
|
|
then
|
|
cat $tmp.out
|
|
echo "failed to mkfs $SCRATCH_DEV"
|
|
exit 1
|
|
fi
|
|
|
|
echo "*** mount"
|
|
if ! _scratch_mount 2>/dev/null
|
|
then
|
|
echo "failed to mount $SCRATCH_DEV"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
_filter_noymlinks_flag()
|
|
{
|
|
_test_inode_flag nosymlinks $SCRATCH_MNT/nosymlink
|
|
if [ $? -eq 0 ]; then
|
|
echo "--n-- SCRATCH_MNT/nosymlink"
|
|
else
|
|
echo "----- SCRATCH_MNT/nosymlink"
|
|
fi
|
|
}
|
|
|
|
# real QA test starts here
|
|
_supported_os Linux IRIX
|
|
_supported_fs xfs
|
|
_require_command $XFS_IO_PROG xfs_io
|
|
_require_scratch
|
|
|
|
_create_scratch
|
|
|
|
|
|
echo "*** testing nosymlinks directories"
|
|
mkdir $SCRATCH_MNT/nosymlink
|
|
echo "*** setting nosymlinks bit"
|
|
$XFS_IO_PROG -r -c 'chattr +n' $SCRATCH_MNT/nosymlink
|
|
_filter_noymlinks_flag
|
|
|
|
touch $SCRATCH_MNT/nosymlink/source
|
|
ln -s $SCRATCH_MNT/nosymlink/source $SCRATCH_MNT/nosymlink/target 2>&1 \
|
|
| _filter_scratch | _filter_ln
|
|
ln $SCRATCH_MNT/nosymlink/source $SCRATCH_MNT/nosymlink/hardlinksareok
|
|
|
|
echo "*** 1st listing..."
|
|
find $SCRATCH_MNT | _filter_scratch
|
|
|
|
echo "*** clearing nosymlinks bit"
|
|
$XFS_IO_PROG -r -c 'chattr -n' $SCRATCH_MNT/nosymlink
|
|
_filter_noymlinks_flag
|
|
|
|
ln -s $SCRATCH_MNT/nosymlink/source $SCRATCH_MNT/nosymlink/target
|
|
ln $SCRATCH_MNT/nosymlink/source $SCRATCH_MNT/nosymlink/hardlinksareok2
|
|
|
|
echo "*** 2nd listing..."
|
|
find $SCRATCH_MNT | _filter_scratch
|
|
|
|
echo "*** finished testing nosymlinks directories"
|
|
|
|
status=0
|
|
exit
|