4 # Exercise the XFS nosymlinks inode flag
6 #-----------------------------------------------------------------------
7 # Copyright (c) 2000-2005 Silicon Graphics, Inc. All Rights Reserved.
8 #-----------------------------------------------------------------------
14 echo "QA output created by $seq"
18 status=1 # failure is the default!
19 trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
21 # get standard environment, filters and checks
28 if ! _scratch_mkfs_xfs >$tmp.out 2>&1
31 echo "failed to mkfs $SCRATCH_DEV"
36 if ! _scratch_mount 2>/dev/null
38 echo "failed to mount $SCRATCH_DEV"
45 sed -e "s,$SCRATCH_MNT,SCRATCH_MNT,g"
50 sed -e "s,SCRATCH_MNT/nosymlink/target - Operation not permitted,ln: creating symbolic link \`SCRATCH_MNT/nosymlink/target\' to \`SCRATCH_MNT/nosymlink/source\': Operation not permitted,g"
53 _filter_noymlinks_flag()
55 _test_inode_flag nosymlinks $SCRATCH_MNT/nosymlink
57 echo "--n-- SCRATCH_MNT/nosymlink"
59 echo "----- SCRATCH_MNT/nosymlink"
63 # real QA test starts here
64 _supported_os Linux IRIX
66 _require_command /usr/sbin/xfs_io
72 echo "*** testing nosymlinks directories"
73 mkdir $SCRATCH_MNT/nosymlink
74 echo "*** setting nosymlinks bit"
75 $XFS_IO_PROG -r -c 'chattr +n' $SCRATCH_MNT/nosymlink
76 _filter_noymlinks_flag
78 touch $SCRATCH_MNT/nosymlink/source
79 ln -s $SCRATCH_MNT/nosymlink/source $SCRATCH_MNT/nosymlink/target 2>&1 \
80 | _filter_scratch | _filter_ln
81 ln $SCRATCH_MNT/nosymlink/source $SCRATCH_MNT/nosymlink/hardlinksareok
83 echo "*** 1st listing..."
84 find $SCRATCH_MNT | _filter_scratch
86 echo "*** clearing nosymlinks bit"
87 $XFS_IO_PROG -r -c 'chattr -n' $SCRATCH_MNT/nosymlink
88 _filter_noymlinks_flag
90 ln -s $SCRATCH_MNT/nosymlink/source $SCRATCH_MNT/nosymlink/target
91 ln $SCRATCH_MNT/nosymlink/source $SCRATCH_MNT/nosymlink/hardlinksareok2
93 echo "*** 2nd listing..."
94 find $SCRATCH_MNT | _filter_scratch
96 echo "*** finished testing nosymlinks directories"