Add more tests to auto-qa group; add test 103 exercising more inode flags.
[xfstests-dev.git] / 103
1 #! /bin/sh
2 # FS QA Test No. 103
3 #
4 # Exercise the XFS nosymlinks and project inheritance inode flags
5 # (for now only nosymlinks is tested; other is not yet implemented).
6 #
7 #-----------------------------------------------------------------------
8 # Copyright (c) 2000-2004 Silicon Graphics, Inc.  All Rights Reserved.
9
10 # This program is free software; you can redistribute it and/or modify it
11 # under the terms of version 2 of the GNU General Public License as
12 # published by the Free Software Foundation.
13
14 # This program is distributed in the hope that it would be useful, but
15 # WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17
18 # Further, this software is distributed without any warranty that it is
19 # free of the rightful claim of any third person regarding infringement
20 # or the like.  Any license provided herein, whether implied or
21 # otherwise, applies only to this software file.  Patent licenses, if
22 # any, provided herein do not apply to combinations of this program with
23 # other software, or any other product whatsoever.
24
25 # You should have received a copy of the GNU General Public License along
26 # with this program; if not, write the Free Software Foundation, Inc., 59
27 # Temple Place - Suite 330, Boston MA 02111-1307, USA.
28
29 # Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
30 # Mountain View, CA  94043, or:
31
32 # http://www.sgi.com 
33
34 # For further information regarding this notice, see: 
35
36 # http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
37 #-----------------------------------------------------------------------
38 #
39 # creator
40 owner=nathans@sgi.com
41
42 seq=`basename $0`
43 echo "QA output created by $seq"
44
45 here=`pwd`
46 tmp=/tmp/$$
47 status=1        # failure is the default!
48 trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
49
50 # get standard environment, filters and checks
51 . ./common.rc
52 . ./common.filter
53
54 _create_scratch()
55 {
56         echo "*** mkfs"
57         if ! _scratch_mkfs_xfs >$tmp.out 2>&1
58         then
59                 cat $tmp.out
60                 echo "failed to mkfs $SCRATCH_DEV"
61                 exit 1
62         fi
63
64         echo "*** mount"
65         if ! _scratch_mount 2>/dev/null
66         then
67                 echo "failed to mount $SCRATCH_DEV"
68                 exit 1
69         fi
70 }
71
72 _filter_scratch()
73 {
74         sed -e "s,$SCRATCH_MNT,SCRATCH_MNT,g"
75 }
76
77 # real QA test starts here
78 _supported_fs xfs
79 _require_command /usr/sbin/xfs_io
80 _require_scratch
81
82 _create_scratch
83
84
85 echo "*** testing nosymlinks directories"
86 mkdir $SCRATCH_MNT/nosymlinks
87 echo "*** setting nosymlinks bit"
88 xfs_io -r -c 'chattr +n' -c lsattr $SCRATCH_MNT/nosymlinks \
89         | _filter_scratch
90 touch $SCRATCH_MNT/nosymlinks/source
91 ln -s $SCRATCH_MNT/nosymlinks/source $SCRATCH_MNT/nosymlinks/target 2>&1 \
92         | _filter_scratch
93 ln $SCRATCH_MNT/nosymlinks/source $SCRATCH_MNT/nosymlinks/hardlinksareok
94
95 echo "*** 1st listing..."
96 find $SCRATCH_MNT | _filter_scratch
97
98 echo "*** clearing nosymlinks bit"
99 xfs_io -r -c 'chattr -n' -c lsattr $SCRATCH_MNT/nosymlinks | _filter_scratch
100 ln -s $SCRATCH_MNT/nosymlinks/source $SCRATCH_MNT/nosymlinks/target
101 ln $SCRATCH_MNT/nosymlinks/source $SCRATCH_MNT/nosymlinks/hardlinksareok2
102
103 echo "*** 2nd listing..."
104 find $SCRATCH_MNT | _filter_scratch
105
106 echo "*** finished testing nosymlinks directories"
107
108
109 # echo "*** testing inherited project IDs"
110 # mkdir $SCRATCH_MNT/projectids
111 # xfs_io -r -c 'chattr +P' -c lsattr -c 'chproj 42' $SCRATCH_MNT/projectids\
112 #       | _filter_scratch
113 # mkdir -p $SCRATCH_MNT/projectids/a/b
114 # touch $SCRATCH_MNT/projectids/a/b/c
115 # xfs_io -r -c 'lsattr -R' $SCRATCH_MNT/projectids
116 # xfs_io -r -c 'lsproj' $SCRATCH_MNT/projectids/a $SCRATCH_MNT/projectids/a/b/c\
117 #       | _filter_scratch
118 # echo "*** 3rd listing..."
119 # find $SCRATCH_MNT | _filter_scratch
120 # echo "*** finished testing inherited project IDs"
121
122 status=0
123 exit