#! /bin/bash # SPDX-License-Identifier: GPL-2.0 # # FSQA Test No. 627 # # AIO/DIO stress test # Run random AIO/DIO activity on an file system with unwritten regions # # This test verifies that the an unwritten extent is properly marked # as written after writing into it. # # There was a hard-to-hit bug which would occasionally trigger with # ext4 for which this test was a reproducer. This has been fixed # after moving ext4 to use iomap for Direct I/O's, although as of this # writing, there are still some occasional failures on ext4 when block # size < page size. # . ./common/preamble _begin_fstest auto aio rw stress prealloc fio_config=$tmp.fio fio_out=$tmp.fio.out # Import common functions. . ./common/filter # real QA test starts here _supported_fs generic _require_test _require_scratch _require_odirect _require_aio _require_block_device $SCRATCH_DEV NUM_JOBS=$((4*LOAD_FACTOR)) BLK_DEV_SIZE=`blockdev --getsz $SCRATCH_DEV` FILE_SIZE=$(((BLK_DEV_SIZE * 512) * 3 / 4)) max_file_size=$((5 * 1024 * 1024 * 1024)) if [ $max_file_size -lt $FILE_SIZE ]; then FILE_SIZE=$max_file_size fi SIZE=$((FILE_SIZE / 2)) cat >$fio_config <> $seqres.full 2>&1 _scratch_mount echo "" echo "Run fio with random aio-dio pattern" echo "" cat $fio_config >> $seqres.full $FIO_PROG $fio_config --output=$fio_out cat $fio_out >> $seqres.full status=0 exit