2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (c) 2014 Filipe Manana. All Rights Reserved.
5 # FS QA Test No. btrfs/048
7 # Btrfs properties test. The btrfs properties feature was introduced in the
11 seqres=$RESULT_DIR/$seq
12 echo "QA output created by $seq"
17 status=1 # failure is the default!
18 trap "_cleanup; exit \$status" 0 1 2 3 15
22 rm -fr $send_files_dir
26 # get standard environment, filters and checks
29 . ./common/filter.btrfs
31 # real QA test starts here
36 _require_btrfs_command "property"
38 send_files_dir=$TEST_DIR/btrfs-test-$seq
41 rm -fr $send_files_dir
44 _scratch_mkfs >/dev/null 2>&1
47 echo "Testing label property"
48 $BTRFS_UTIL_PROG property get $SCRATCH_MNT label
50 $BTRFS_UTIL_PROG property set $SCRATCH_MNT label foobar
51 $BTRFS_UTIL_PROG property get $SCRATCH_MNT label
53 $BTRFS_UTIL_PROG property get $SCRATCH_MNT
55 $BTRFS_UTIL_PROG property set $SCRATCH_MNT label ''
56 $BTRFS_UTIL_PROG property get $SCRATCH_MNT label
58 mkdir $SCRATCH_MNT/testdir
59 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir label 2>&1 |
60 _filter_btrfs_prop_error label
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
67 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/sv1 ro foo 2>&1 |
68 _filter_btrfs_prop_error
70 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/sv1 ro true
72 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/sv1 ro
74 touch $SCRATCH_MNT/sv1/foobar 2>&1 | _filter_scratch
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
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
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
91 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/testdir/file1 compression lzo
92 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/file1 compression
94 # Verify property was persisted.
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
104 # Test compression property inheritance.
106 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/testdir/subdir1 compression lzo
107 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1 compression
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
113 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/some_file compression
115 mkdir $SCRATCH_MNT/testdir/subdir1/subsubdir/foo
116 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/subsubdir/foo \
120 # Verify property was persisted.
124 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/subsubdir compression
126 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/subsubdir/foo \
129 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/some_file compression
131 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/testdir/subdir1/subsubdir \
133 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/testdir/subdir1/some_file \
135 $BTRFS_UTIL_PROG property set $SCRATCH_MNT/testdir/subdir1 compression ''
137 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/subsubdir compression
139 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/some_file compression
141 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1 compression
143 touch $SCRATCH_MNT/testdir/subdir1/some_file_2
144 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/testdir/subdir1/some_file_2 \
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
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
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 \
166 _scratch_mkfs >/dev/null 2>&1
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 \
174 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/mysnap2/testdir/subdir1/foobar2 \
180 _scratch_mkfs >/dev/null 2>&1
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
187 touch $SCRATCH_MNT/file1
188 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/file1 compression
190 mkdir $SCRATCH_MNT/dir1
191 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/dir1 compression
193 mkdir $SCRATCH_MNT/dir1/subdir1
194 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/dir1/subdir1 compression
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
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