generic/594: require setquota tool supports project quota
[xfstests-dev.git] / tests / overlay / 029
1 #! /bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (c) 2017 Red Hat Inc.  All Rights Reserved.
4 #
5 # FS QA Test 029
6 #
7 # There are dirs/files in lower dir and upper dir before
8 # mounting overlayfs. After mounting, use dir in overlayfs
9 # mountpoint as lowerdir to mount another overlayfs, then
10 # access old files through the second overlayfs. It was
11 # not working, kernel commit below fixed it.
12 #
13 # c4fcfc1619ea ovl: fix d_real() for stacked fs
14 #
15 # This reproducer was originally written by
16 #     Miklos Szeredi <mszeredi@redhat.com>
17 #
18 seq=`basename $0`
19 seqres=$RESULT_DIR/$seq
20 echo "QA output created by $seq"
21
22 here=`pwd`
23 tmp=/tmp/$$
24 status=1        # failure is the default!
25 trap "_cleanup; exit \$status" 0 1 2 3 15
26
27 _cleanup()
28 {
29         cd /
30         $UMOUNT_PROG $tmp/mnt
31         rm -rf $tmp
32         rm -f $tmp.*
33 }
34
35 # get standard environment, filters and checks
36 . ./common/rc
37 . ./common/filter
38
39 # remove previous $seqres.full before test
40 rm -f $seqres.full
41
42 # real QA test starts here
43
44 # Modify as appropriate.
45 _supported_fs overlay
46 _supported_os Linux
47 _require_scratch
48
49 # Remove all files from previous tests
50 _scratch_mkfs
51
52 # Preparing files
53 upperdir=$OVL_BASE_SCRATCH_MNT/$OVL_UPPER
54 lowerdir=$OVL_BASE_SCRATCH_MNT/$OVL_LOWER
55 mkdir -p $upperdir/up
56 echo foo > $upperdir/up/foo
57 mkdir -p $lowerdir/low
58 echo bar > $lowerdir/low/bar
59
60 # mount overlay in SCRATCH_MNT
61 _scratch_mount
62
63 mkdir -p $tmp/{upper,mnt,work}
64 # mount overlay again using upper dir from SCRATCH_MNT dir
65 _overlay_mount_dirs $SCRATCH_MNT/up $tmp/{upper,work} \
66   overlay $tmp/mnt
67 # accessing file in the second mount
68 cat $tmp/mnt/foo
69 $UMOUNT_PROG $tmp/mnt
70
71 # mount overlay again using lower dir from SCRATCH_MNT dir
72 _overlay_mount_dirs $SCRATCH_MNT/low $tmp/{upper,work} \
73   overlay $tmp/mnt
74 cat $tmp/mnt/bar
75 $UMOUNT_PROG $tmp/mnt
76
77 # mount overlay again using SCRATCH_MNT dir
78 _overlay_mount_dirs $SCRATCH_MNT/ $tmp/{upper,work} \
79   overlay $tmp/mnt
80 cat $tmp/mnt/up/foo
81 cat $tmp/mnt/low/bar
82
83 # success, all done
84 status=0
85 exit