b7c940d77bae247313cdb64027db2465f4e41ec4
[xfstests-dev.git] / tests / generic / 384
1 #! /bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (c) 2006 Silicon Graphics, Inc.  All Rights Reserved.
4 #
5 # FS QA Test No. 384
6 #
7 # test to reproduce PV951636:
8 #   project quotas not updated if a file is mv'd into that directory
9 #
10 seq=`basename $0`
11 seqres=$RESULT_DIR/$seq
12 echo "QA output created by $seq"
13
14 here=`pwd`
15 tmp=/tmp/$$
16 status=1        # failure is the default!
17
18 # get standard environment, filters and checks
19 . ./common/rc
20 . ./common/filter
21 . ./common/quota
22
23 _cleanup()
24 {
25         cd /
26         _scratch_unmount 2>/dev/null
27         rm -f $tmp.*
28 }
29 trap "_cleanup; exit \$status" 0 1 2 3 15
30
31 # real QA test starts here
32 _supported_fs generic
33 _supported_os Linux
34
35 _require_test
36 _require_quota
37 _require_xfs_quota_foreign
38 _require_xfs_io_command "chproj"
39
40 # we can't run with group quotas
41 _exclude_scratch_mount_option "gquota" "grpquota"
42
43 dir=$SCRATCH_MNT/project
44
45 #project quota files
46 cat >$tmp.projects <<EOF
47 1:$dir
48 EOF
49
50 cat >$tmp.projid <<EOF
51 test:1
52 EOF
53
54 cp /dev/null $seqres.full
55 chmod a+rwx $seqres.full        # arbitrary users will write here
56
57 _require_scratch
58 _scratch_mkfs >/dev/null 2>&1
59 _scratch_enable_pquota
60
61 _qmount_option "prjquota"
62 _qmount
63 _require_prjquota $SCRATCH_DEV
64
65 report_quota()
66 {
67     $XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid -x \
68                     -c "repquota -inN -p" $SCRATCH_DEV | \
69                     tr -s '[:space:]' | _filter_project_quota
70 }
71
72 mkdir $dir
73 $XFS_IO_PROG -r -c "chproj -R 1" -c "chattr -R +P" $dir
74
75 $XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid -x \
76     -c "limit -p bsoft=100m bhard=100m 1" $SCRATCH_DEV
77 report_quota
78
79 touch $dir/1
80 touch $dir/2
81 cp $dir/2 $dir/3
82 report_quota
83
84 xfs_mkfile 1M $TEST_DIR/6
85
86 #try cp to dir
87 cp $TEST_DIR/6 $dir/6
88 report_quota
89
90 #try mv to dir
91 mv $TEST_DIR/6 $dir/7
92 report_quota
93
94 # success, all done
95 status=0
96 exit