#! /bin/bash # SPDX-License-Identifier: GPL-2.0 # Copyright (c) 2016 Fujitsu. All Rights Reserved. # # FS QA Test 028 # # Test if qgroup can handle extent de-reference during reallocation. # "extent de-reference" means that reducing an extent's reference count # or freeing an extent. # Although current qgroup can handle it, we still need to prevent any # regression which may break current qgroup. # . ./common/preamble _begin_fstest auto qgroup balance . ./common/filter _supported_fs btrfs _require_scratch _require_btrfs_qgroup_report _scratch_mkfs >/dev/null _scratch_mount _btrfs quota enable $SCRATCH_MNT _qgroup_rescan $SCRATCH_MNT # Increase the probability of generating de-refer extent, and decrease # other. args=`_scale_fsstress_args -z \ -f write=10 -f unlink=10 \ -f creat=10 -f fsync=10 \ -f fsync=10 -n 100000 -p 2 \ -d $SCRATCH_MNT/stress_dir` echo "Run fsstress $args" >>$seqres.full $FSSTRESS_PROG $args >>$seqres.full & fsstress_pid=$! echo "Start balance" >>$seqres.full _btrfs_stress_balance -d $SCRATCH_MNT >/dev/null 2>&1 & balance_pid=$! # 30s is enough to trigger bug sleep $((30*$TIME_FACTOR)) kill $fsstress_pid &> /dev/null wait $fsstress_pid &> /dev/null _btrfs_kill_stress_balance_pid $balance_pid # The qgroups accounting will be checked by 'btrfs check' (fsck) after the # fstests framework unmounts the filesystem. echo "Silence is golden" status=0 exit