2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (C) 2019 SUSE Linux Products GmbH. All Rights Reserved.
7 # Test if btrfs will lockup at subvolume deletion when qgroups are enabled.
9 # This bug is going to be fixed by a patch for the kernel titled
10 # "btrfs: qgroup: Don't trigger backref walk at delayed ref insert time".
13 seqres=$RESULT_DIR/$seq
14 echo "QA output created by $seq"
18 status=1 # failure is the default!
19 trap "_cleanup; exit \$status" 0 1 2 3 15
27 # get standard environment, filters and checks
31 # remove previous $seqres.full before test
34 # real QA test starts here
36 # Modify as appropriate.
41 # default sleep interval
47 _scratch_mkfs > /dev/null 2>&1
50 mkdir -p "$SCRATCH_MNT/snapshots"
51 $BTRFS_UTIL_PROG subvolume create "$SCRATCH_MNT/src" > /dev/null
52 $BTRFS_UTIL_PROG quota enable "$SCRATCH_MNT" > /dev/null
53 $BTRFS_UTIL_PROG quota rescan -w "$SCRATCH_MNT" > /dev/null
57 trap "wait; exit" SIGTERM
60 _pwrite_byte 0xcd 0 8K "$SCRATCH_MNT/src/large_$i" > /dev/null
61 _pwrite_byte 0xcd 0 2K "$SCRATCH_MNT/src/inline_$i" > /dev/null
63 # Randomly remove some files for every 5 loop
64 if [ $(( $i % 5 )) -eq 0 ]; then
65 victim=$(ls "$SCRATCH_MNT/src" | sort -R | head -n1)
66 rm "$SCRATCH_MNT/src/$victim"
74 trap "wait; exit" SIGTERM
78 $BTRFS_UTIL_PROG subvolume snapshot "$SCRATCH_MNT/src" \
79 "$SCRATCH_MNT/snapshots/$i" > /dev/null
86 trap "wait; exit" SIGTERM
88 sleep $((sleep_time * 2))
89 victim=$(ls "$SCRATCH_MNT/snapshots" | sort -R | head -n1)
90 $BTRFS_UTIL_PROG subvolume delete \
91 "$SCRATCH_MNT/snapshots/$victim" > /dev/null
98 sleep $((sleep_time * 2))
113 echo "Silence is golden"