| #! /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 |
| _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 |