Test quota disable during btrfs balance and confirm it does not cause kernel hang. This is a regression test for the problem reported to linux-btrfs list [1]. The hang was recreated using the test case and memory backed null_blk device with 5GB size as the scratch device. [1] https://lore.kernel.org/linux-btrfs/20220115053012.941761-1-shinichiro.kawasaki@xxxxxxx/ Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@xxxxxxx> --- tests/btrfs/255 | 42 ++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/255.out | 2 ++ 2 files changed, 44 insertions(+) create mode 100755 tests/btrfs/255 create mode 100644 tests/btrfs/255.out diff --git a/tests/btrfs/255 b/tests/btrfs/255 new file mode 100755 index 00000000..16b682ca --- /dev/null +++ b/tests/btrfs/255 @@ -0,0 +1,42 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2022 Western Digital Corporation or its affiliates. +# +# FS QA Test No. btrfs/255 +# +# Confirm that disabling quota during balance does not hang +# +. ./common/preamble +_begin_fstest auto qgroup + +# real QA test starts here +_supported_fs btrfs +_require_scratch + +_scratch_mkfs >> $seqres.full 2>&1 +_scratch_mount + +# Fill 40% of the device or 2GB +fill_percent=40 +max_fillsize=$((2*1024*1024*1024)) + +devsize=$(($(_get_device_size $SCRATCH_DEV) * 512)) +fillsize=$((devsize * fill_percent / 100)) +((fillsize > max_fillsize)) && fillsize=$max_fillsize + +fs=$((4096*1024)) +for ((i=0; i * fs < fillsize; i++)); do + dd if=/dev/zero of=$SCRATCH_MNT/file.$i bs=$fs count=1 \ + >> $seqres.full 2>&1 +done +echo 3 > /proc/sys/vm/drop_caches + +# Run btrfs balance and quota enable/disable in parallel +_run_btrfs_balance_start $SCRATCH_MNT >> $seqres.full & +$BTRFS_UTIL_PROG quota enable $SCRATCH_MNT +$BTRFS_UTIL_PROG quota disable $SCRATCH_MNT +wait + +echo "Silence is golden" +status=0 +exit diff --git a/tests/btrfs/255.out b/tests/btrfs/255.out new file mode 100644 index 00000000..7eefb828 --- /dev/null +++ b/tests/btrfs/255.out @@ -0,0 +1,2 @@ +QA output created by 255 +Silence is golden -- 2.33.1