mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
18b5abf824
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>
98 lines
2.0 KiB
Bash
Executable File
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
|