overlay/075: fix wrong invocation of t_immutable
[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 _require_scratch
47
48 # Remove all files from previous tests
49 _scratch_mkfs
50
51 # Preparing files
52 upperdir=$OVL_BASE_SCRATCH_MNT/$OVL_UPPER
53 lowerdir=$OVL_BASE_SCRATCH_MNT/$OVL_LOWER
54 mkdir -p $upperdir/up
55 echo foo > $upperdir/up/foo
56 mkdir -p $lowerdir/low
57 echo bar > $lowerdir/low/bar
58
59 # mount overlay in SCRATCH_MNT
60 _scratch_mount
61
62 mkdir -p $tmp/{upper,mnt,work}
63 # mount overlay again using upper dir from SCRATCH_MNT dir
64 _overlay_mount_dirs $SCRATCH_MNT/up $tmp/{upper,work} \
65   overlay $tmp/mnt
66 # accessing file in the second mount
67 cat $tmp/mnt/foo
68 $UMOUNT_PROG $tmp/mnt
69
70 # re-create upper/work to avoid ovl_verify_origin() mount failure
71 # when index is enabled
72 rm -rf $tmp/{upper,work}
73 mkdir -p $tmp/{upper,work}
74 # mount overlay again using lower dir from SCRATCH_MNT dir
75 _overlay_mount_dirs $SCRATCH_MNT/low $tmp/{upper,work} \
76   overlay $tmp/mnt
77 cat $tmp/mnt/bar
78 $UMOUNT_PROG $tmp/mnt
79
80 rm -rf $tmp/{upper,work}
81 mkdir -p $tmp/{upper,work}
82 # mount overlay again using SCRATCH_MNT dir
83 _overlay_mount_dirs $SCRATCH_MNT/ $tmp/{upper,work} \
84   overlay $tmp/mnt
85 cat $tmp/mnt/up/foo
86 cat $tmp/mnt/low/bar
87
88 # success, all done
89 status=0
90 exit