blob: 0099ada5764e00c2cd17067a58ebe210bd69cac2 [file] [log] [blame]
#! /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