99762a59b004b47f2ddc21492cbc67b8ec146b55
[xfstests-dev.git] / 244
1 #! /bin/bash
2 # FS QA Test No. 244
3 #
4 # test to verify that proper project quota id is correctly set
5 #
6 #-----------------------------------------------------------------------
7 # Copyright (c) 2010 Arkadiusz Miśkiewicz.  All Rights Reserved.
8 #
9 # This program is free software; you can redistribute it and/or
10 # modify it under the terms of the GNU General Public License as
11 # published by the Free Software Foundation.
12 #
13 # This program is distributed in the hope that it would be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 # GNU General Public License for more details.
17 #
18 # You should have received a copy of the GNU General Public License
19 # along with this program; if not, write the Free Software Foundation,
20 # Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
21 #
22 #-----------------------------------------------------------------------
23 #
24 # creator
25 owner=arekm@maven.pl
26
27 seq=`basename $0`
28 echo "QA output created by $seq"
29
30 here=`pwd`
31 tmp=/tmp/$$
32 status=1        # failure is the default!
33 trap "_cleanup; exit \$status" 0 1 2 3 15
34
35 # get standard environment, filters and checks
36 . ./common.rc
37 . ./common.filter
38 . ./common.quota
39
40 _cleanup()
41 {
42         cd /
43         umount $SCRATCH_MNT 2>/dev/null
44         rm -f $tmp.*
45 }
46
47 # real QA test starts here
48 _supported_fs xfs
49 _require_xfs_quota
50 _require_scratch
51
52 export MOUNT_OPTIONS="-opquota"
53
54 # make fs with no projid32bit
55 _scratch_mkfs_xfs -i projid32bit=0 >> $seq.full || _fail "mkfs failed"
56 _qmount
57 # make sure project quota is supported
58 _require_prjquota ${SCRATCH_DEV}
59
60 dir=$SCRATCH_MNT/project
61
62 status=0
63
64 echo "Silence is golden"
65
66 # Do testing on filesystem with projid32bit feature disabled
67 mkdir $dir
68
69 touch $dir/below16bit
70 # below 16bit value
71 $XFS_QUOTA_PROG -x -c "project -s -p $dir/below16bit 3422" $SCRATCH_DEV \
72                 >> $seq.full
73 projid=$($XFS_IO_PROG -r -c "lsproj" $dir/below16bit)
74 if [ "projid = 3422" != "$projid" ]; then
75         echo "FAIL: projid32bit disabled: returned projid value ($projid)"
76         echo "      doesn't match set one (projid = 3422)"
77         status=1
78 fi
79
80 # 32bit value, should fail
81 touch $dir/over16bit
82 if $XFS_QUOTA_PROG -x -c "project -s -p $dir/over16bit 108545" $SCRATCH_DEV \
83                 >> $seq.full 2>&1; then
84         echo "FAIL: projid32bit disabled: setting 32bit projid succeeded"
85         echo "      while it should fail"
86         status=1
87 fi
88
89 # over 32bit value, should fail
90 touch $dir/over32bit
91 if $XFS_QUOTA_PROG -x -c "project -s -p $dir/over32bit 5344967296" $SCRATCH_DEV >> $seq.full 2>&1; then
92         echo "FAIL: projid32bit disabled: setting over 32bit projid succeeded"
93         echo "      while it should fail"
94         status=1
95 fi
96
97 #  Do testing on filesystem with projid32bit feature enabled
98 umount $SCRATCH_DEV 2>/dev/null
99 _scratch_mkfs_xfs -i projid32bit=1 >> $seq.full || _fail "mkfs failed"
100 _qmount
101 mkdir $dir
102
103 touch $dir/below16bit
104 # below 16bit value, should succeed
105 $XFS_QUOTA_PROG -x -c "project -s -p $dir/below16bit 3422" $SCRATCH_DEV \
106                 >> $seq.full
107 projid=$($XFS_IO_PROG -r -c "lsproj" $dir/below16bit)
108 if [ "projid = 3422" != "$projid" ]; then
109         echo "FAIL: projid32bit enabled: returned projid value ($projid)"
110         echo "      doesn't match set one (projid = 3422)"
111         status=1
112 fi
113
114 # 32bit value, should succeed
115 touch $dir/over16bit
116 if $XFS_QUOTA_PROG -x -c "project -s -p $dir/over16bit 108545" $SCRATCH_DEV \
117                 >> $seq.full 2>&1; then
118         projid=$($XFS_IO_PROG -r -c "lsproj" $dir/over16bit)
119         if [ "projid = 108545" != "$projid" ]; then
120                 echo "FAIL: projid32bit enabled: returned projid value ($projid)"
121                 echo "      doesn't match set one (projid = 108545)"
122                 status=1
123         fi
124 else
125         echo "FAIL: projid32bit enabled: setting 32bit projid failed"
126         echo "      while it should succeed"
127         status=1
128 fi
129
130 # over 32bit value, should fail
131 touch $dir/over32bit
132 if $XFS_QUOTA_PROG -x -c "project -s -p $dir/over32bit 5344967296" $SCRATCH_DEV \
133                 >> $seq.full 2>&1; then
134         echo "FAIL: projid32bit enabled: setting over 32bit projid succeeded"
135         echo "      while it should fail"
136         status=1
137 fi