From 696fe102ebebc3d6adc50670886a2f35ece1c97f Mon Sep 17 00:00:00 2001 From: Qu Wenruo Date: Fri, 7 Jun 2024 13:17:02 +0930 Subject: [PATCH] btrfs-progs: tests: do not use async discard for misc/004 [BUG] There is a long existing failure in my local VM that with any newer kernel (6.x) the test case misc/004 would fail with ENOSPC during balance: [TEST] misc-tests.sh [TEST/misc] 004-shrink-fs failed: /home/adam/btrfs-progs/btrfs balance start -mconvert=single -sconvert=single -f /home/adam/btrfs-progs/tests/mnt test failed for case 004-shrink-fs make: *** [Makefile:547: test-misc] Error 1 [CAUSE] With more testing, it turns out that just before the balance, the filesystem still have several empty data block groups. The reason is the new default discard=async behavior, as it also changes the empty block groups to be async, this leave the empty block groups there, resulting no extra space for the convert balance. [FIX] I do not understand why for loop block devices we also enable discard, but at least disable discard for the test case so that we can ensure the empty block groups get cleaned up properly. Pull-request: #809 Signed-off-by: Qu Wenruo Signed-off-by: David Sterba --- tests/misc-tests/004-shrink-fs/test.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/misc-tests/004-shrink-fs/test.sh b/tests/misc-tests/004-shrink-fs/test.sh index c7473649..4fb42a02 100755 --- a/tests/misc-tests/004-shrink-fs/test.sh +++ b/tests/misc-tests/004-shrink-fs/test.sh @@ -32,7 +32,9 @@ shrink_test() run_check truncate -s 20G "$IMAGE" run_check "$TOP/mkfs.btrfs" -f "$IMAGE" -run_check $SUDO_HELPER mount "$IMAGE" "$TEST_MNT" +# Disable the new default async discard, which makes empty block group cleanup +# async. +run_check $SUDO_HELPER mount -o nodiscard "$IMAGE" "$TEST_MNT" run_check $SUDO_HELPER chmod a+rw "$TEST_MNT" # Create 7 data block groups, each with a size of 1Gb.