blob: a2fdaf7bbe7dae2a6bc963cd441a113d5c557b1b [file] [log] [blame]
#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2016 Fujitsu. All Rights Reserved.
#
# FS QA Test 371
#
# Run write(2) and fallocate(2) in parallel and the total needed data space
# for these operations don't exceed whole fs free data space, to see whether
# we will get any unexpected ENOSPC error.
#
. ./common/preamble
_begin_fstest auto quick enospc prealloc
# Import common functions.
. ./common/filter
# Modify as appropriate.
_supported_fs generic
_require_scratch
_require_xfs_io_command "falloc"
test "$FSTYP" = "xfs" && _require_xfs_io_command "extsize"
_scratch_mkfs_sized $((256 * 1024 * 1024)) >> $seqres.full 2>&1
_scratch_mount
# Disable speculative post-EOF preallocation on XFS, which can grow fast enough
# that a racing fallocate then fails.
if [ "$FSTYP" = "xfs" ]; then
alloc_sz="$(_get_file_block_size $SCRATCH_MNT)"
$XFS_IO_PROG -c "extsize $alloc_sz" $SCRATCH_MNT >> $seqres.full
fi
testfile1=$SCRATCH_MNT/testfile1
testfile2=$SCRATCH_MNT/testfile2
echo "Silence is golden"
for ((i=0; i<100; i++)); do
$XFS_IO_PROG -fc "pwrite 0 80M" $testfile1 >/dev/null
rm -f $testfile1
done &
pids=$!
for ((i=0; i<100; i++)); do
$XFS_IO_PROG -fc "falloc 0 80M" $testfile2 >/dev/null
rm -f $testfile2
done &
pids="$pids $!"
wait $pids
status=0
exit