btrfs: convert tests to SPDX license tags
[xfstests-dev.git] / tests / btrfs / 048
1 #! /bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (c) 2014 Filipe Manana.  All Rights Reserved.
4 #
5 # FS QA Test No. btrfs/048
6 #
7 # Btrfs properties test. The btrfs properties feature was introduced in the
8 # linux kernel 3.14.
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
17 status=1        # failure is the default!
18 trap "_cleanup; exit \$status" 0 1 2 3 15
19
20 _cleanup()
21 {
22     rm -fr $send_files_dir
23     rm -fr $tmp
24 }
25
26 # get standard environment, filters and checks
27 . ./common/rc
28 . ./common/filter
29 . ./common/filter.btrfs
30
31 # real QA test starts here
32 _supported_fs btrfs
33 _supported_os Linux
34 _require_test
35 _require_scratch
36 _require_btrfs_command "property"
37
38 send_files_dir=$TEST_DIR/btrfs-test-$seq
39
40 rm -f $seqres.full
41 rm -fr $send_files_dir
42 mkdir $send_files_dir
43
44 _scratch_mkfs >/dev/null 2>&1
45 _scratch_mount
46
47 echo "Testing label property"
48 $BTRFS_UTIL_PROG property get $SCRATCH_MNT label
49 echo "***"
50 $BTRFS_UTIL_PROG property set $SCRATCH_MNT label foobar
51 $BTRFS_UTIL_PROG property get $SCRATCH_MNT label
52 echo "***"
53 $BTRFS_UTIL_PROG property get $SCRATCH_MNT
54 echo "***"
55 $BTRFS_UTIL_PROG property set $SCRATCH_MNT label ''
56 $BTRFS_UTIL_PROG property get $SCRATCH_MNT label
57 echo "***"
58 mkdir $SCRATCH_MNT/testdir
59 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir label 2>&1 |
60         _filter_btrfs_prop_error label
61 echo "***"
62
63 echo -e "\nTesting subvolume ro property"
64 _run_btrfs_util_prog subvolume create $SCRATCH_MNT/sv1
65 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/sv1 ro
66 echo "***"
67 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/sv1 ro foo 2>&1 |
68         _filter_btrfs_prop_error
69 echo "***"
70 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/sv1 ro true
71 echo "***"
72 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/sv1 ro
73 echo "***"
74 touch $SCRATCH_MNT/sv1/foobar 2>&1 | _filter_scratch
75 echo "***"
76 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/sv1 ro false
77 touch $SCRATCH_MNT/sv1/foobar 2>&1 | _filter_scratch
78 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/sv1
79 echo "***"
80
81 echo -e "\nTesting compression property"
82 mkdir $SCRATCH_MNT/testdir/subdir1
83 touch $SCRATCH_MNT/testdir/file1
84 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/file1 compression
85 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1 compression
86 echo "***"
87 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/testdir/file1 compression \
88         foo 2>&1 | _filter_scratch |
89         _filter_btrfs_prop_error SCRATCH_MNT/testdir/file1
90 echo "***"
91 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/testdir/file1 compression lzo
92 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/file1 compression
93
94 # Verify property was persisted.
95 _scratch_unmount
96 _check_scratch_fs
97 _scratch_mount
98 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/file1 compression
99 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/testdir/file1 compression zlib
100 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/file1 compression
101 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/testdir/file1 compression ''
102 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/file1 compression
103
104 # Test compression property inheritance.
105 echo "***"
106 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/testdir/subdir1 compression lzo
107 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1 compression
108 echo "***"
109 mkdir $SCRATCH_MNT/testdir/subdir1/subsubdir
110 touch $SCRATCH_MNT/testdir/subdir1/some_file
111 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/subsubdir compression
112 echo "***"
113 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/some_file compression
114 echo "***"
115 mkdir $SCRATCH_MNT/testdir/subdir1/subsubdir/foo
116 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/subsubdir/foo \
117         compression
118 echo "***"
119
120 # Verify property was persisted.
121 _scratch_unmount
122 _check_scratch_fs
123 _scratch_mount
124 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/subsubdir compression
125 echo "***"
126 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/subsubdir/foo \
127         compression
128 echo "***"
129 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/some_file compression
130 echo "***"
131 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/testdir/subdir1/subsubdir \
132         compression ''
133 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/testdir/subdir1/some_file \
134         compression ''
135 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/testdir/subdir1 compression ''
136 echo "***"
137 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/subsubdir compression
138 echo "***"
139 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/some_file compression
140 echo "***"
141 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1 compression
142 echo "***"
143 touch $SCRATCH_MNT/testdir/subdir1/some_file_2
144 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/some_file_2 \
145         compression
146 echo "***"
147
148 # Verify send is able to replicate properties.
149 echo -e "\nTesting properties with send"
150 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/testdir/subdir1 compression lzo
151 touch $SCRATCH_MNT/testdir/subdir1/foobar
152 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1 compression
153 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/foobar compression
154 echo "***"
155
156 _run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap1
157 touch $SCRATCH_MNT/testdir/subdir1/foobar2
158 _run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap2
159
160 _run_btrfs_util_prog send -f $send_files_dir/1.snap $SCRATCH_MNT/mysnap1
161 _run_btrfs_util_prog send -p $SCRATCH_MNT/mysnap1 -f $send_files_dir/2.snap \
162         $SCRATCH_MNT/mysnap2
163
164 _scratch_unmount
165 _check_scratch_fs
166 _scratch_mkfs >/dev/null 2>&1
167 _scratch_mount
168
169 _run_btrfs_util_prog receive -f $send_files_dir/1.snap $SCRATCH_MNT
170 _run_btrfs_util_prog receive -f $send_files_dir/2.snap $SCRATCH_MNT
171 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/mysnap2/testdir/subdir1 compression
172 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/mysnap2/testdir/subdir1/foobar \
173         compression
174 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/mysnap2/testdir/subdir1/foobar2 \
175         compression
176 echo "***"
177
178 _scratch_unmount
179 _check_scratch_fs
180 _scratch_mkfs >/dev/null 2>&1
181 _scratch_mount
182
183 echo -e "\nTesting subvolume properties"
184 $BTRFS_UTIL_PROG property set $SCRATCH_MNT compression 'lzo'
185 $BTRFS_UTIL_PROG property get $SCRATCH_MNT compression
186 echo "***"
187 touch $SCRATCH_MNT/file1
188 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/file1 compression
189 echo "***"
190 mkdir $SCRATCH_MNT/dir1
191 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/dir1 compression
192 echo "***"
193 mkdir $SCRATCH_MNT/dir1/subdir1
194 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/dir1/subdir1 compression
195 echo "***"
196 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/dir1/subdir1 compression 'zlib'
197 touch $SCRATCH_MNT/dir1/subdir1/foo
198 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/dir1/subdir1/foo compression
199
200 echo -e "\nTesting subvolume property inheritance"
201 _run_btrfs_util_prog subvolume create $SCRATCH_MNT/sv1
202 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/sv1 compression
203 touch $SCRATCH_MNT/sv1/file2
204 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/sv1/file2 compression
205
206 status=0
207 exit