[PATCH] fstests: btrfs/163: replace sprout instead of seed

Anand Jain
2020-08-30T14:42:57Z

As of now, this test case replaced the seed device in a sprouted seed
filesystem. However, the kernel doesn't support the replacement of the seed
device yet. And the following kernel patch shall enforce the [1]
unsupportability and returns -EINVAL (error code is the same as in seed
device in a non sprouted filesystem replacement).

[1]
btrfs: fix replace of seed device

So in this test case instead of seed as replacing target use the sprout
device. As we didn't have any test case which shall test the replacement of
sprout device. So now this case fills the gap.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
I will send this to fstests ML once kernel patch is integrated.

tests/btrfs/163 | 21 ++++++++++++++++-----
tests/btrfs/163.out | 5 ++++-
2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/tests/btrfs/163 b/tests/btrfs/163
index 24c725afb6b9..354d88502d47 100755
--- a/tests/btrfs/163
+++ b/tests/btrfs/163
@@ -4,11 +4,15 @@
#
# FS QA Test 163
#
-# Test case to verify that a seed device can be replaced
+# Test case to verify that a sprouted device can be replaced
# Create a seed device
# Create a sprout device
# Remount RW
-# Run device replace on the seed device
+# Run device replace on the sprout device
+#
+# Depends on the kernel patch
+# btrfs: fail replace of seed device
+
seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"
@@ -39,6 +43,7 @@ _supported_fs btrfs
_supported_os Linux
_require_command "$BTRFS_TUNE_PROG" btrfstune
_require_scratch_dev_pool 3
+_require_btrfs_forget_or_module_loadable

_scratch_dev_pool_get 3

@@ -52,7 +57,7 @@ create_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 --
+ echo -- golden --
od -x $SCRATCH_MNT/foobar
_run_btrfs_util_prog filesystem show -m $SCRATCH_MNT
_scratch_unmount
@@ -64,22 +69,28 @@ add_sprout()
{
_run_btrfs_util_prog device add -f $dev_sprout $SCRATCH_MNT
_run_btrfs_util_prog filesystem show -m $SCRATCH_MNT
+ _mount -o remount,rw $dev_sprout $SCRATCH_MNT
+ $XFS_IO_PROG -f -d -c "pwrite -S 0xcd 0 4M" $SCRATCH_MNT/foobar2 >\
+ /dev/null
}

replace_seed()
{
- _run_btrfs_util_prog replace start -fB $dev_seed $dev_replace_tgt $SCRATCH_MNT
+ _run_btrfs_util_prog replace start -fB $dev_sprout $dev_replace_tgt $SCRATCH_MNT
_run_btrfs_util_prog filesystem show -m $SCRATCH_MNT
_scratch_unmount
- run_check _mount $dev_replace_tgt $SCRATCH_MNT
+ _btrfs_forget_or_module_reload
+ run_check _mount -o device=$dev_seed $dev_replace_tgt $SCRATCH_MNT
echo -- sprout --
od -x $SCRATCH_MNT/foobar
+ od -x $SCRATCH_MNT/foobar2
_scratch_unmount

}

seed_is_mountable()
{
+ _btrfs_forget_or_module_reload
run_check _mount $dev_seed $SCRATCH_MNT
_run_btrfs_util_prog filesystem show -m $SCRATCH_MNT
_scratch_unmount
diff --git a/tests/btrfs/163.out b/tests/btrfs/163.out
index 91f6f5b6f48a..351ef7b040b2 100644
--- a/tests/btrfs/163.out
+++ b/tests/btrfs/163.out
@@ -1,5 +1,5 @@
QA output created by 163
--- gloden --
+-- golden --
0000000 abab abab abab abab abab abab abab abab
*
20000000
@@ -7,3 +7,6 @@ QA output created by 163
0000000 abab abab abab abab abab abab abab abab
*
20000000
+0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
+*
+20000000
--
2.25.1