On Tue, Sep 29, 2020 at 4:50 PM Anand Jain <anand.jain@xxxxxxxxxx> wrote: > > btrfs/064 aimed to test balance and replace concurrency while the stress > test is running in the background. > > However, as the balance and the replace operation are mutually > exclusive, so they can never run concurrently. And it's good to have a test that verifies that attempting to run them concurrently doesn't cause any problems, like crashes, memory leaks or some sort of filesystem corruption. For example btrfs/187, which I wrote sometime ago, tests that running send, balance and deduplication in parallel doesn't result in crashes, since in the past they were allowed to run concurrently. I see no point in removing the test, it's useful. Thanks. > > So long this test case is showed successful because the btrfs replace's > return error was captured only into seqfull.out. > > ERROR: ioctl(DEV_REPLACE_START) '/mnt/scratch': add/delete/balance/replace/resize operation in progress > > Reported-by: Josef Bacik <josef@xxxxxxxxxxxxxx> > Signed-off-by: Anand Jain <anand.jain@xxxxxxxxxx> > --- > tests/btrfs/064 | 105 -------------------------------------------- > tests/btrfs/064.out | 2 - > 2 files changed, 107 deletions(-) > delete mode 100755 tests/btrfs/064 > delete mode 100644 tests/btrfs/064.out > > diff --git a/tests/btrfs/064 b/tests/btrfs/064 > deleted file mode 100755 > index 683a69f113bf..000000000000 > --- a/tests/btrfs/064 > +++ /dev/null > @@ -1,105 +0,0 @@ > -#! /bin/bash > -# SPDX-License-Identifier: GPL-2.0 > -# Copyright (C) 2014 Red Hat Inc. All rights reserved. > -# > -# FSQA Test No. btrfs/064 > -# > -# Run btrfs balance and replace operations simultaneously with fsstress > -# running in background. > -# > -seq=`basename $0` > -seqres=$RESULT_DIR/$seq > -echo "QA output created by $seq" > - > -here=`pwd` > -tmp=/tmp/$$ > -status=1 > -trap "_cleanup; exit \$status" 0 1 2 3 15 > - > -_cleanup() > -{ > - cd / > - rm -f $tmp.* > -} > - > -# get standard environment, filters and checks > -. ./common/rc > -. ./common/filter > - > -# real QA test starts here > -_supported_fs btrfs > -# we check scratch dev after each loop > -_require_scratch_nocheck > -_require_scratch_dev_pool 5 > -_require_scratch_dev_pool_equal_size > -_btrfs_get_profile_configs replace > - > -rm -f $seqres.full > - > -run_test() > -{ > - local mkfs_opts=$1 > - local saved_scratch_dev_pool=$SCRATCH_DEV_POOL > - > - echo "Test $mkfs_opts" >>$seqres.full > - > - # remove the last device from the SCRATCH_DEV_POOL list so > - # _scratch_pool_mkfs won't use all devices in pool > - local last_dev="`echo $SCRATCH_DEV_POOL | $AWK_PROG '{print $NF}'`" > - SCRATCH_DEV_POOL=`echo $SCRATCH_DEV_POOL | sed -e "s# *$last_dev *##"` > - _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" > - SCRATCH_DEV_POOL=$saved_scratch_dev_pool > - return > - fi > - _scratch_mount >>$seqres.full 2>&1 > - SCRATCH_DEV_POOL=$saved_scratch_dev_pool > - > - 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=$! > - > - echo -n "Start balance worker: " >>$seqres.full > - _btrfs_stress_balance $SCRATCH_MNT >/dev/null 2>&1 & > - balance_pid=$! > - echo "$balance_pid" >>$seqres.full > - > - echo -n "Start replace worker: " >>$seqres.full > - _btrfs_stress_replace $SCRATCH_MNT >>$seqres.full 2>&1 & > - replace_pid=$! > - echo "$replace_pid" >>$seqres.full > - > - echo "Wait for fsstress to exit and kill all background workers" >>$seqres.full > - wait $fsstress_pid > - kill $balance_pid $replace_pid > - wait > - # wait for the balance and replace operations to finish > - while ps aux | grep "balance start" | grep -qv grep; do > - sleep 1 > - done > - while ps aux | grep "replace start" | 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 > - > - _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" > -done > - > -status=0 > -exit > diff --git a/tests/btrfs/064.out b/tests/btrfs/064.out > deleted file mode 100644 > index d90765460090..000000000000 > --- a/tests/btrfs/064.out > +++ /dev/null > @@ -1,2 +0,0 @@ > -QA output created by 064 > -Silence is golden > -- > 2.25.1 > -- Filipe David Manana, “Whether you think you can, or you think you can't — you're right.”