mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
generic/551: Adjust the size argument for aio-dio-write-verify
generic/551 sometimes fails because it's killed by OOM killer. That is because aio-dio-write-verify, which is called by generic/551, tries to allocate memory even though the total allocation size exceeds the available memory. aio-dio-write-verify allocates memory according to the 'size' argument, and generic/551 passes the argument. Stop adding the argument when the total size is exceeds the available memory. Signed-off-by: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com> Reviewed-by: Eryu Guan <guaneryu@gmail.com> Signed-off-by: Eryu Guan <guaneryu@gmail.com>
This commit is contained in:
committed by
Eryu Guan
parent
6b04ed0545
commit
9a09e4ec72
@@ -910,6 +910,17 @@ _free_memory_bytes()
|
||||
free -b | grep ^Mem | awk '{print $4}'
|
||||
}
|
||||
|
||||
_available_memory_bytes()
|
||||
{
|
||||
nf=`free -b | grep ^Mem | awk '{print NF}'`
|
||||
if [[ nf -lt 7 ]]; then
|
||||
# Doesn't have available field. Fallback.
|
||||
_free_memory_bytes
|
||||
else
|
||||
free -b | grep ^Mem | awk '{print $7}'
|
||||
fi
|
||||
}
|
||||
|
||||
# Create fs of certain size on scratch device
|
||||
# _scratch_mkfs_sized <size in bytes> [optional blocksize]
|
||||
_scratch_mkfs_sized()
|
||||
|
||||
@@ -55,12 +55,18 @@ do_test()
|
||||
local size
|
||||
local off
|
||||
local truncsize
|
||||
local total_size=0
|
||||
local avail_mem=`_available_memory_bytes`
|
||||
|
||||
# the number of AIO write operation
|
||||
num_oper=$((RANDOM % 64 + 1))
|
||||
|
||||
for ((i=0; i<num_oper; i++)); do
|
||||
size=$(((RANDOM % max_io_size_b + 1) * diosize))
|
||||
total_size=$((total_size + size*2))
|
||||
if [[ $total_size -ge $avail_mem ]]; then
|
||||
break
|
||||
fi
|
||||
off=$((RANDOM % max_io_size_b * diosize))
|
||||
oper_list="$oper_list -a size=$size,off=$off"
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user