2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (c) 2020 Sidong Yang. All Rights Reserved.
7 # Test the assign functionality of qgroups
10 seqres=$RESULT_DIR/$seq
11 echo "QA output created by $seq"
15 status=1 # failure is the default!
16 trap "_cleanup; exit \$status" 0 1 2 3 15
24 # get standard environment, filters and checks
29 # remove previous $seqres.full before test
32 # real QA test starts here
34 # Modify as appropriate.
38 _require_btrfs_qgroup_report
41 # Test assign qgroup for submodule with shared extents by reflink
44 _scratch_mkfs > /dev/null 2>&1
47 echo "=== qgroup assign shared test ===" >> $seqres.full
48 $BTRFS_UTIL_PROG quota enable $SCRATCH_MNT
49 $BTRFS_UTIL_PROG quota rescan -w $SCRATCH_MNT >> $seqres.full
51 $BTRFS_UTIL_PROG subvolume create $SCRATCH_MNT/a >> $seqres.full
52 $BTRFS_UTIL_PROG subvolume create $SCRATCH_MNT/b >> $seqres.full
54 _ddt of="$SCRATCH_MNT"/a/file1 bs=1M count=1 >> $seqres.full 2>&1
55 _cp_reflink "$SCRATCH_MNT"/a/file1 "$SCRATCH_MNT"/b/file1
57 $BTRFS_UTIL_PROG qgroup create 1/100 $SCRATCH_MNT
58 $BTRFS_UTIL_PROG qgroup assign $SCRATCH_MNT/a 1/100 $SCRATCH_MNT
59 $BTRFS_UTIL_PROG qgroup assign $SCRATCH_MNT/b 1/100 $SCRATCH_MNT
65 # Test assign qgroup for submodule without shared extents
66 assign_no_shared_test()
68 _scratch_mkfs > /dev/null 2>&1
71 echo "=== qgroup assign no shared test ===" >> $seqres.full
72 $BTRFS_UTIL_PROG quota enable $SCRATCH_MNT
73 $BTRFS_UTIL_PROG quota rescan -w $SCRATCH_MNT >> $seqres.full
75 $BTRFS_UTIL_PROG subvolume create $SCRATCH_MNT/a >> $seqres.full
76 $BTRFS_UTIL_PROG subvolume create $SCRATCH_MNT/b >> $seqres.full
78 $BTRFS_UTIL_PROG qgroup create 1/100 $SCRATCH_MNT
79 $BTRFS_UTIL_PROG qgroup assign $SCRATCH_MNT/a 1/100 $SCRATCH_MNT
80 $BTRFS_UTIL_PROG qgroup assign $SCRATCH_MNT/b 1/100 $SCRATCH_MNT
86 # Test snapshot with assigning qgroup for submodule
89 _scratch_mkfs > /dev/null 2>&1
92 echo "=== qgroup snapshot test ===" >> $seqres.full
93 $BTRFS_UTIL_PROG quota enable $SCRATCH_MNT
94 $BTRFS_UTIL_PROG quota rescan -w $SCRATCH_MNT >> $seqres.full
96 $BTRFS_UTIL_PROG subvolume create $SCRATCH_MNT/a >> $seqres.full
97 _ddt of="$SCRATCH_MNT"/a/file1 bs=1M count=1 >> $seqres.full 2>&1
98 subvolid=$(_btrfs_get_subvolid $SCRATCH_MNT a)
99 $BTRFS_UTIL_PROG subvolume snapshot -i 0/$subvolid $SCRATCH_MNT/a $SCRATCH_MNT/b >> $seqres.full
106 assign_no_shared_test
113 echo "Silence is golden"