Files
apfstests/tests/btrfs/163
T
Naohiro Aota 18b5abf824 btrfs/163: make readahead run on the seed device
There is a long lived bug that btrfs wait for readahead to finish
indefinitely when readahead zone is inserted into seed devices.

Current write size to the file "foobar" is too small to run readahead
before the replacing on seed device. So, increase the write size to
reproduce the issue.

Following patch fixes it:

	"btrfs: start readahead also in seed devices"

Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
2019-06-07 19:01:33 +08:00

98 lines
2.0 KiB
Bash
Executable File

#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2018 Oracle. All Rights Reserved.
#
# FS QA Test 163
#
# Test case to verify that a seed device can be replaced
# Create a seed device
# Create a sprout device
# Remount RW
# Run device replace on the seed device
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()
{
cd /
rm -f $tmp.*
}
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
. ./common/filter.btrfs
# remove previous $seqres.full before test
rm -f $seqres.full
# real QA test starts here
# Modify as appropriate.
_supported_fs btrfs
_supported_os Linux
_require_command "$BTRFS_TUNE_PROG" btrfstune
_require_scratch_dev_pool 3
_scratch_dev_pool_get 3
dev_seed=$(echo $SCRATCH_DEV_POOL | awk '{print $1}')
dev_sprout=$(echo $SCRATCH_DEV_POOL | awk '{print $2}')
dev_replace_tgt=$(echo $SCRATCH_DEV_POOL | awk '{print $3}')
create_seed()
{
_mkfs_dev $dev_seed
run_check _mount $dev_seed $SCRATCH_MNT
$XFS_IO_PROG -f -d -c "pwrite -S 0xab 0 4M" $SCRATCH_MNT/foobar >\
/dev/null
echo -- gloden --
od -x $SCRATCH_MNT/foobar
_run_btrfs_util_prog filesystem show -m $SCRATCH_MNT
_scratch_unmount
$BTRFS_TUNE_PROG -S 1 $dev_seed
run_check _mount $dev_seed $SCRATCH_MNT
}
add_sprout()
{
_run_btrfs_util_prog device add -f $dev_sprout $SCRATCH_MNT
_run_btrfs_util_prog filesystem show -m $SCRATCH_MNT
}
replace_seed()
{
_run_btrfs_util_prog replace start -fB $dev_seed $dev_replace_tgt $SCRATCH_MNT
_run_btrfs_util_prog filesystem show -m $SCRATCH_MNT
_scratch_unmount
run_check _mount $dev_replace_tgt $SCRATCH_MNT
echo -- sprout --
od -x $SCRATCH_MNT/foobar
_scratch_unmount
}
seed_is_mountable()
{
run_check _mount $dev_seed $SCRATCH_MNT
_run_btrfs_util_prog filesystem show -m $SCRATCH_MNT
_scratch_unmount
}
create_seed
add_sprout
replace_seed
seed_is_mountable
_scratch_dev_pool_put
status=0
exit