blob: 54c1999624212723066a63200f4edb4c2b8365c7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
#! /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
. ./common/preamble
_begin_fstest auto rw
status=0 # success is the default!
# Override the default cleanup function.
_cleanup()
{
cd /
rm -rf $tmp.*
_scratch_unmount
}
. ./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=$(_get_available_space $SCRATCH_MNT)
_free_inodes=$(_get_free_inode $SCRATCH_MNT)
# Some filesystems do not limit number of inodes and return 0
if [ $_free_inodes -eq 0 ]; then
# Guess one block per inode
_free_inodes=$(($_disksize / $block_size))
fi
# Leave some slack for directories etc.
_free_inodes=$(($_free_inodes - $_free_inodes/8))
_disksize=$(($_disksize / 3))
_num=$(($_disksize / $count / $block_size))
if [ $_num -gt $_free_inodes ]; then
_num=$_free_inodes
fi
_num=$(($_num/$threads))
_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_file_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 "------------------------------"
_scratch_unmount 2>/dev/null
_scratch_mkfs_sized $((2 * 1024 * 1024 * 1024)) >>$seqres.full 2>&1
_scratch_mount
_do_workload
status=0
exit
|