Files
apfstests/tests/btrfs/190
T
Darrick J. Wong 7e98d41a6e fstests: move test group info to test files
Refactor every test in the entire test suite to use the new boilerplate
functions.  This also migrates all the test group information into the
test files.  This patch has been autogenerated via the command:

./tools/convert-group btrfs ceph cifs ext4 f2fs generic nfs ocfs2 overlay perf shared udf xfs

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
2021-06-27 22:50:02 +08:00

77 lines
2.0 KiB
Bash
Executable File

#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2019 SUSE Linux Products GmbH. All Rights Reserved.
#
# FS QA Test 190
#
# A general test to validate that balance and qgroups work correctly when
# balance needs to be resumed on mount.
#
. ./common/preamble
_begin_fstest auto quick replay balance qgroup
# Import common functions.
. ./common/filter
. ./common/dmlogwrites
# real QA test starts here
# Modify as appropriate.
_supported_fs btrfs
_require_scratch
# and we need extra device as log device
_require_log_writes
nr_files=512 # enough metadata to bump tree height
file_size=2048 # small enough to be inlined
_log_writes_init $SCRATCH_DEV
_log_writes_mkfs >> $seqres.full 2>&1
_log_writes_mount
$BTRFS_UTIL_PROG quota enable $SCRATCH_MNT >> $seqres.full
$BTRFS_UTIL_PROG quota rescan -w $SCRATCH_MNT >> $seqres.full
# Create enough metadata for later balance
for ((i = 0; i < $nr_files; i++)); do
_pwrite_byte 0xcd 0 $file_size $SCRATCH_MNT/file_$i > /dev/null
done
# Flush delalloc so that balance has work to do.
sync
# Balance metadata so we will have at least one transaction committed with
# valid reloc tree, and hopefully another commit with orphan reloc tree.
_run_btrfs_balance_start -f -m $SCRATCH_MNT >> $seqres.full
_log_writes_unmount
_log_writes_remove
cur=$(_log_writes_find_next_fua 0)
echo "cur=$cur" >> $seqres.full
while [ ! -z "$cur" ]; do
_log_writes_replay_log_range $cur $SCRATCH_DEV >> $seqres.full
# Test that no crashes happen or any other kind of failure.
_scratch_mount
_scratch_unmount
# Don't trigger fsck here, as relocation get paused,
# at that transistent state, qgroup number may differ
# and cause false alert.
prev=$cur
cur=$(_log_writes_find_next_fua $(($cur + 1)))
[ -z "$cur" ] && break
done
# Now the fs has finished its balance and qgroup should be consistent.
# Fstest will automatically check the fs and btrfs check will report
# any qgroup inconsistent if something went wrong.
echo "Silence is golden"
# success, all done
status=0
exit