mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
7e98d41a6e
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>
90 lines
2.4 KiB
Bash
Executable File
90 lines
2.4 KiB
Bash
Executable File
#! /bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
# Copyright (C) 2014 Red Hat Inc. All rights reserved.
|
|
#
|
|
# FSQA Test No. btrfs/067
|
|
#
|
|
# Run btrfs subvolume create/mount/umount/delete and btrfs defrag
|
|
# operation simultaneously, with fsstress running in background.
|
|
#
|
|
. ./common/preamble
|
|
_begin_fstest auto subvol defrag compress
|
|
|
|
# Import common functions.
|
|
. ./common/filter
|
|
|
|
# real QA test starts here
|
|
_supported_fs btrfs
|
|
# we check scratch dev after each loop
|
|
_require_scratch_nocheck
|
|
_require_scratch_dev_pool 4
|
|
_btrfs_get_profile_configs
|
|
|
|
run_test()
|
|
{
|
|
local mkfs_opts=$1
|
|
local with_compress=$2
|
|
local subvol_mnt=$TEST_DIR/$seq.mnt
|
|
local stop_file=$TEST_DIR/$seq.stop.$$
|
|
|
|
echo "Test $mkfs_opts with $with_compress" >>$seqres.full
|
|
|
|
_scratch_pool_mkfs $mkfs_opts >>$seqres.full 2>&1
|
|
# make sure we created btrfs with desired options
|
|
if [ $? -ne 0 ]; then
|
|
echo "mkfs $mkfs_opts failed"
|
|
return
|
|
fi
|
|
_scratch_mount >>$seqres.full 2>&1
|
|
|
|
args=`_scale_fsstress_args -p 20 -n 100 $FSSTRESS_AVOID -d $SCRATCH_MNT/stressdir`
|
|
echo "Run fsstress $args" >>$seqres.full
|
|
$FSSTRESS_PROG $args >/dev/null 2>&1 &
|
|
fsstress_pid=$!
|
|
|
|
# make sure the stop sign is not there
|
|
rm -f $stop_file
|
|
echo -n "Start subvolume worker: " >>$seqres.full
|
|
_btrfs_stress_subvolume $SCRATCH_DEV $SCRATCH_MNT subvol_$$ $subvol_mnt $stop_file >/dev/null 2>&1 &
|
|
subvol_pid=$!
|
|
echo "$subvol_pid" >>$seqres.full
|
|
|
|
echo -n "Start defrag worker: " >>$seqres.full
|
|
_btrfs_stress_defrag $SCRATCH_MNT $with_compress >/dev/null 2>&1 &
|
|
defrag_pid=$!
|
|
echo "$defrag_pid" >>$seqres.full
|
|
|
|
echo "Wait for fsstress to exit and kill all background workers" >>$seqres.full
|
|
wait $fsstress_pid
|
|
|
|
touch $stop_file
|
|
kill $defrag_pid
|
|
wait
|
|
# wait for btrfs defrag process to exit, otherwise it will block umount
|
|
while ps aux | grep "btrfs filesystem defrag" | grep -qv grep; do
|
|
sleep 1
|
|
done
|
|
|
|
echo "Scrub the filesystem" >>$seqres.full
|
|
$BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
echo "Scrub find errors in \"$mkfs_opts\" test" | tee -a $seqres.full
|
|
fi
|
|
|
|
# in case the subvolume is still mounted
|
|
$UMOUNT_PROG $subvol_mnt >/dev/null 2>&1
|
|
_scratch_unmount
|
|
# we called _require_scratch_nocheck instead of _require_scratch
|
|
# do check after test for each profile config
|
|
_check_scratch_fs
|
|
}
|
|
|
|
echo "Silence is golden"
|
|
for t in "${_btrfs_profile_configs[@]}"; do
|
|
run_test "$t" nocompress
|
|
run_test "$t" compress
|
|
done
|
|
|
|
status=0
|
|
exit
|