#! /bin/bash # SPDX-License-Identifier: GPL-2.0 # Copyright (c) 2016 Red Hat, Inc. All Rights Reserved. # # FS QA Test 999 # # Multi-threads freeze/unfreeze testing. This's a stress test case, # it won't do functional check. # . ./common/preamble _begin_fstest auto freeze stress # Override the default cleanup function. _cleanup() { cd / # Make sure $SCRATCH_MNT is unfreezed xfs_freeze -u $SCRATCH_MNT 2>/dev/null rm -f $tmp.* } # Import common functions. . ./common/filter # real QA test starts here echo "Silence is golden" # Modify as appropriate. _supported_fs generic _require_scratch _require_freeze _require_test_program "feature" _scratch_mkfs >>$seqres.full 2>&1 # We don't want to freeze/unfreeze root fs if mount scratch dev failed _scratch_mount num_cpus=`$here/src/feature -o` # Start fsstress in background procs=$num_cpus if [ $procs -gt 20 ]; then procs=20 elif [ $procs -le 1 ]; then procs=2 fi nops=1000 stress_dir="$SCRATCH_MNT/fsstress_test_dir" mkdir "$stress_dir" fsstress_args=`_scale_fsstress_args -d $stress_dir -p $procs -n $nops $FSSTRESS_AVOID` $FSSTRESS_PROG $fsstress_args >>$seqres.full 2>&1 & fsstress_pid=$! # Start multi-threads freeze/unfreeze for ((i=0; i<$procs; i++)); do while kill -0 $fsstress_pid 2>/dev/null; do xfs_freeze -f $SCRATCH_MNT 2>/dev/null xfs_freeze -u $SCRATCH_MNT 2>/dev/null done & freeze_pids="$! $freeze_pids" done wait $fsstress_pid result=$? wait $freeze_pids # Exit with fsstress return value status=$result exit