Files
apfstests/tests/generic/361
T
Darrick J. Wong 3c7fd09bc7 generic/361: disable xfs metadata io error retries
This test examines the behavior of xfs when the underlying filesystem is
a sparse image on the scratch filesystem when the scratch fs is about to
run out of space.  Unfortunately, the test assumes that the scratch fs
will ENOSPC on the large data write.  It's possible that metadata
writeback will hit ENOSPC instead, and if we do, the test will hang
forever while xfs retries the write.  Make sure we're set up to fail
fast so that we don't hang the test appliance.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
2020-07-20 00:40:07 +08:00

71 lines
1.6 KiB
Bash
Executable File

#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2016 Red Hat Inc. All Rights Reserved.
#
# FS QA Test 361
#
# Test remount on I/O errors.
#
# XFS had a bug to hang on remount in this case, this kernel commit fix
# the issue.
# 5cb13dc cancel the setfilesize transation when io error happen
#
seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"
here=`pwd`
tmp=/tmp/$$
status=1 # failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
_cleanup()
{
$UMOUNT_PROG $fs_mnt
_destroy_loop_device $loop_dev
cd /
rm -f $tmp.*
}
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
rm -f $seqres.full
# real QA test starts here
_supported_fs generic
_supported_os Linux
_require_scratch
_require_block_device $SCRATCH_DEV
_require_loop
# create a small filesystem to hold another filesystem image
_scratch_mkfs_sized $((512 * 1024 * 1024)) >>$seqres.full 2>&1
_scratch_mount
# create the sparse fs image and mount point
fs_img=$SCRATCH_MNT/fs.img
fs_mnt=$SCRATCH_MNT/mnt
$XFS_IO_PROG -fc "truncate 1g" $fs_img >>$seqres.full 2>&1
mkdir -p $fs_mnt
# mount loop device and create a larger file to hit I/O errors on loop device
loop_dev=$(_create_loop_device $fs_img)
_mkfs_dev $loop_dev
_mount $loop_dev $fs_mnt
if [ "$FSTYP" = "xfs" ]; then
# Turn off all XFS metadata IO error retries
dname=$(_short_dev $loop_dev)
echo 0 | tee /sys/fs/xfs/$dname/error/*/*/* > /dev/null
fi
$XFS_IO_PROG -fc "pwrite 0 520m" $fs_mnt/testfile >>$seqres.full 2>&1
# remount should not hang
$MOUNT_PROG -o remount,ro $fs_mnt >>$seqres.full 2>&1
# success, all done
echo "Silence is golden"
status=0
exit