[PATCH v2 3/3] btrfs-progs: mfks-tests: make sure mkfs.btrfs cleans up temporary chunks

Qu Wenruo
2021-10-11T12:07:11Z

Since current "btrfs filesystem df" command will warn if there are
multiple profiles of the same type, it's a good way to detect left-over
temporary chunks.

This patch will enhance the existing mkfs-tests/001-basic-profiles test
case to also check for the warning messages, to make sure mkfs.btrfs has
properly cleaned up all temporary chunks.

There is a special workaround newly implemented in test_get_info(), as
recent kernel introduced single device RAID0 support, which is no
different than SINGLE.

But for single device RAID0, kernel may choose to preallocate new chunks
with SINGLE profile, causing false alerts.

Work around this kernel bug by mounting the btrfs read-only to prevent
preallocating new chunks.

Signed-off-by: Qu Wenruo <wqu@suse.com>
---
tests/mkfs-tests/001-basic-profiles/test.sh | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/tests/mkfs-tests/001-basic-profiles/test.sh b/tests/mkfs-tests/001-basic-profiles/test.sh
index b3ba50d71ddc..0be199749864 100755
--- a/tests/mkfs-tests/001-basic-profiles/test.sh
+++ b/tests/mkfs-tests/001-basic-profiles/test.sh
@@ -11,10 +11,22 @@ setup_root_helper

test_get_info()
{
+ tmp_out=$(mktemp --tmpdir btrfs-progs-mkfs-tests-get-info.XXXXXX)
run_check $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-super "$dev1"
run_check $SUDO_HELPER "$TOP/btrfs" check "$dev1"
- run_check $SUDO_HELPER mount "$dev1" "$TEST_MNT"
- run_check "$TOP/btrfs" filesystem df "$TEST_MNT"
+
+ btrfs ins dump-tree -t chunk "$dev1" >> "$RESULTS"
+
+ # Work around a kernel bug that kernel will treat SINGLE and single
+ # device RAID0 as the same.
+ # Thus kernel may create new SINGLE chunks, causing extra warning
+ # when testing single device RAID0.
+ run_check $SUDO_HELPER mount -o ro "$dev1" "$TEST_MNT"
+ if grep -q "Multiple block group profiles detected" "$tmp_out"; then
+ rm -- "$tmp_out"
+ _fail "temporary chunks are not properly cleaned up"
+ fi
+ rm -- "$tmp_out"
run_check $SUDO_HELPER "$TOP/btrfs" filesystem usage "$TEST_MNT"
run_check $SUDO_HELPER "$TOP/btrfs" device usage "$TEST_MNT"
run_check $SUDO_HELPER umount "$TEST_MNT"
--
2.33.0