#! /bin/bash # SPDX-License-Identifier: GPL-2.0 # Copyright (c) 2011-2012 Fujitsu, Inc. All Rights Reserved. # # FS QA Test No. 273 # # reservation test with heavy cp workload # #creator seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" here=`pwd` tmp=/tmp/$$ status=0 # success is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 _cleanup() { cd / rm -rf $tmp.* _scratch_unmount } . ./common/rc . ./common/filter threads=50 count=2 _threads_set() { _cpu_num=`$here/src/feature -o` threads=$(($_cpu_num * 50)) if [ $threads -gt 200 ] then threads=200 fi } _file_create() { block_size=$1 _i=0 if ! mkdir $SCRATCH_MNT/origin then echo "mkdir origin err" status=1 exit fi cd $SCRATCH_MNT/origin _disksize=`$DF_PROG -B 1 $SCRATCH_MNT | tail -1 | $AWK_PROG '{ print $5 }'` _disksize=$(($_disksize / 3)) _num=$(($_disksize / $count / $threads / $block_size)) _count=$count while [ $_i -lt $_num ] do dd if=/dev/zero of=file_$_i bs=$block_size count=$_count >/dev/null 2>&1 _i=$(($_i + 1)) done cd $here } _porter() { _suffix=$1 if ! mkdir $SCRATCH_MNT/sub_$_suffix then echo "mkdir sub_xxx err" status=1 exit fi cp -r $SCRATCH_MNT/origin $SCRATCH_MNT/sub_$_suffix >>$seqres.full 2>&1 if [ $? -ne 0 ] then echo "_porter $_suffix not complete" fi sync } _do_workload() { _pids="" _pid=1 block_size=$(_get_block_size $SCRATCH_MNT) _threads_set _file_create $block_size _threads=$threads while [ $_pid -lt $_threads ] do _porter $_pid & _pids="$_pids $!" _pid=$(($_pid + 1)) done wait $_pids } # real QA test starts here _supported_fs generic _supported_os Linux _require_scratch echo "------------------------------" echo "start the workload" echo "------------------------------" rm -f $seqres.full _scratch_unmount 2>/dev/null _scratch_mkfs_sized $((2 * 1024 * 1024 * 1024)) >>$seqres.full 2>&1 _scratch_mount _do_workload status=0 exit