linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/2] add seed delete test case and fix btrfs/163
@ 2020-10-20 12:32 Anand Jain
  2020-10-20 12:32 ` [PATCH v3 1/2] btrfs: add a test case for btrfs seed device delete Anand Jain
  2020-10-20 12:32 ` [PATCH v3 2/2] btrfs/163: replace sprout instead of seed Anand Jain
  0 siblings, 2 replies; 5+ messages in thread
From: Anand Jain @ 2020-10-20 12:32 UTC (permalink / raw)
  To: fstests; +Cc: linux-btrfs, fdmanana

Anand Jain (2):
  btrfs: add a test case for btrfs seed device delete
  btrfs/163: replace sprout instead of seed

 tests/btrfs/163     | 25 ++++++++++----
 tests/btrfs/163.out |  5 ++-
 tests/btrfs/225     | 82 +++++++++++++++++++++++++++++++++++++++++++++
 tests/btrfs/225.out | 15 +++++++++
 tests/btrfs/group   |  1 +
 5 files changed, 120 insertions(+), 8 deletions(-)
 create mode 100755 tests/btrfs/225
 create mode 100644 tests/btrfs/225.out

-- 
2.25.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v3 1/2] btrfs: add a test case for btrfs seed device delete
  2020-10-20 12:32 [PATCH v3 0/2] add seed delete test case and fix btrfs/163 Anand Jain
@ 2020-10-20 12:32 ` Anand Jain
  2020-10-20 12:51   ` Filipe Manana
  2020-10-20 12:32 ` [PATCH v3 2/2] btrfs/163: replace sprout instead of seed Anand Jain
  1 sibling, 1 reply; 5+ messages in thread
From: Anand Jain @ 2020-10-20 12:32 UTC (permalink / raw)
  To: fstests; +Cc: linux-btrfs, fdmanana

This is a regression test for the issue fixed by the kernel commit
b5ddcffa3777 (btrfs: fix put of uninitialized kobject after seed device
delete).

In this test case, we verify the seed device delete on a sprouted
filesystem.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
v3: Add commit id for the kernel patch mentioned in the change log and
the header.
    Fix to _supported_fs btrfs
    Drop _supported_os Linux
    Use define AWK_PROG
    Drop the directIO in xfs_io it has no use
    Make it a new test case 225

v2: drop the sysfs layout check as it breaks the test-case backward
compatibility.

 tests/btrfs/225     | 82 +++++++++++++++++++++++++++++++++++++++++++++
 tests/btrfs/225.out | 15 +++++++++
 tests/btrfs/group   |  1 +
 3 files changed, 98 insertions(+)
 create mode 100755 tests/btrfs/225
 create mode 100644 tests/btrfs/225.out

diff --git a/tests/btrfs/225 b/tests/btrfs/225
new file mode 100755
index 000000000000..730d9645f34c
--- /dev/null
+++ b/tests/btrfs/225
@@ -0,0 +1,82 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2020 Oracle. All Rights Reserved.
+#
+# FS QA Test 225
+#
+# Test for seed device-delete on a sprouted FS.
+# Requires kernel patch
+#    b5ddcffa3777  btrfs: fix put of uninitialized kobject after seed device delete
+#
+# Steps:
+#  Create a seed FS. Add a RW device to make it sprout FS and then delete
+#  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
+
+# remove previous $seqres.full before test
+rm -f $seqres.full
+
+# real QA test starts here
+
+# Modify as appropriate.
+_supported_fs btrfs
+_require_test
+_require_scratch_dev_pool 2
+
+_scratch_dev_pool_get 2
+
+seed=$(echo $SCRATCH_DEV_POOL | $AWK_PROG '{print $1}')
+sprout=$(echo $SCRATCH_DEV_POOL | $AWK_PROG '{print $2}')
+
+_mkfs_dev $seed
+_mount $seed $SCRATCH_MNT
+
+$XFS_IO_PROG -f -c "pwrite -S 0xab 0 1M" $SCRATCH_MNT/foo > /dev/null
+_scratch_unmount
+$BTRFS_TUNE_PROG -S 1 $seed
+
+# Mount the seed device and add the rw device
+_mount -o ro $seed $SCRATCH_MNT
+$BTRFS_UTIL_PROG device add -f $sprout $SCRATCH_MNT
+_scratch_unmount
+
+# Now remount
+_mount $sprout $SCRATCH_MNT
+$XFS_IO_PROG -f -c "pwrite -S 0xcd 0 1M" $SCRATCH_MNT/bar > /dev/null
+
+echo --- before delete ----
+od -x $SCRATCH_MNT/foo
+od -x $SCRATCH_MNT/bar
+
+$BTRFS_UTIL_PROG device delete $seed $SCRATCH_MNT
+_scratch_unmount
+_btrfs_forget_or_module_reload
+_mount $sprout $SCRATCH_MNT
+
+echo --- after delete ----
+od -x $SCRATCH_MNT/foo
+od -x $SCRATCH_MNT/bar
+
+_scratch_dev_pool_put
+
+# success, all done
+status=0
+exit
diff --git a/tests/btrfs/225.out b/tests/btrfs/225.out
new file mode 100644
index 000000000000..2e5d6ebee2c3
--- /dev/null
+++ b/tests/btrfs/225.out
@@ -0,0 +1,15 @@
+QA output created by 225
+--- before delete ----
+0000000 abab abab abab abab abab abab abab abab
+*
+4000000
+0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
+*
+4000000
+--- after delete ----
+0000000 abab abab abab abab abab abab abab abab
+*
+4000000
+0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
+*
+4000000
diff --git a/tests/btrfs/group b/tests/btrfs/group
index 9ad33baa8119..960981e57eb1 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -226,3 +226,4 @@
 222 auto quick send
 223 auto quick replace trim
 224 auto quick qgroup
+225 auto quick volume seed
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v3 2/2] btrfs/163: replace sprout instead of seed
  2020-10-20 12:32 [PATCH v3 0/2] add seed delete test case and fix btrfs/163 Anand Jain
  2020-10-20 12:32 ` [PATCH v3 1/2] btrfs: add a test case for btrfs seed device delete Anand Jain
@ 2020-10-20 12:32 ` Anand Jain
  2020-10-20 12:53   ` Filipe Manana
  1 sibling, 1 reply; 5+ messages in thread
From: Anand Jain @ 2020-10-20 12:32 UTC (permalink / raw)
  To: fstests; +Cc: linux-btrfs, fdmanana

Make this test case inline with the kernel patch [1] changes
[1] c6a5d954950c btrfs: fix replace of seed device

So use the sprout device as the replace target instead of the seed device.
This change is compatible with the older kernels.

While at this, this patch also fixes a typo fix as well.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
v3:
  add kernel commit id in the change log and in the header.
  remove directio in xfs_io.
  rename replace_seed() to replace_sprout().

v2:
  none

 tests/btrfs/163     | 25 ++++++++++++++++++-------
 tests/btrfs/163.out |  5 ++++-
 2 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/tests/btrfs/163 b/tests/btrfs/163
index 3047862f9e15..735881c6936e 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
+#   c6a5d954950c btrfs: fail replace of seed device
+
 seq=`basename $0`
 seqres=$RESULT_DIR/$seq
 echo "QA output created by $seq"
@@ -38,6 +42,7 @@ rm -f $seqres.full
 _supported_fs btrfs
 _require_command "$BTRFS_TUNE_PROG" btrfstune
 _require_scratch_dev_pool 3
+_require_btrfs_forget_or_module_loadable
 
 _scratch_dev_pool_get 3
 
@@ -51,7 +56,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
@@ -63,22 +68,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 -c "pwrite -S 0xcd 0 4M" $SCRATCH_MNT/foobar2 >\
+		/dev/null
 }
 
-replace_seed()
+replace_sprout()
 {
-	_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
@@ -86,7 +97,7 @@ seed_is_mountable()
 
 create_seed
 add_sprout
-replace_seed
+replace_sprout
 
 seed_is_mountable
 
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


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 1/2] btrfs: add a test case for btrfs seed device delete
  2020-10-20 12:32 ` [PATCH v3 1/2] btrfs: add a test case for btrfs seed device delete Anand Jain
@ 2020-10-20 12:51   ` Filipe Manana
  0 siblings, 0 replies; 5+ messages in thread
From: Filipe Manana @ 2020-10-20 12:51 UTC (permalink / raw)
  To: Anand Jain; +Cc: fstests, linux-btrfs

On Tue, Oct 20, 2020 at 1:34 PM Anand Jain <anand.jain@oracle.com> wrote:
>
> This is a regression test for the issue fixed by the kernel commit
> b5ddcffa3777 (btrfs: fix put of uninitialized kobject after seed device
> delete).
>
> In this test case, we verify the seed device delete on a sprouted
> filesystem.
>
> Signed-off-by: Anand Jain <anand.jain@oracle.com>

Reviewed-by: Filipe Manana <fdmanana@suse.com>

Looks good, thanks.

> ---
> v3: Add commit id for the kernel patch mentioned in the change log and
> the header.
>     Fix to _supported_fs btrfs
>     Drop _supported_os Linux
>     Use define AWK_PROG
>     Drop the directIO in xfs_io it has no use
>     Make it a new test case 225
>
> v2: drop the sysfs layout check as it breaks the test-case backward
> compatibility.
>
>  tests/btrfs/225     | 82 +++++++++++++++++++++++++++++++++++++++++++++
>  tests/btrfs/225.out | 15 +++++++++
>  tests/btrfs/group   |  1 +
>  3 files changed, 98 insertions(+)
>  create mode 100755 tests/btrfs/225
>  create mode 100644 tests/btrfs/225.out
>
> diff --git a/tests/btrfs/225 b/tests/btrfs/225
> new file mode 100755
> index 000000000000..730d9645f34c
> --- /dev/null
> +++ b/tests/btrfs/225
> @@ -0,0 +1,82 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (c) 2020 Oracle. All Rights Reserved.
> +#
> +# FS QA Test 225
> +#
> +# Test for seed device-delete on a sprouted FS.
> +# Requires kernel patch
> +#    b5ddcffa3777  btrfs: fix put of uninitialized kobject after seed device delete
> +#
> +# Steps:
> +#  Create a seed FS. Add a RW device to make it sprout FS and then delete
> +#  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
> +
> +# remove previous $seqres.full before test
> +rm -f $seqres.full
> +
> +# real QA test starts here
> +
> +# Modify as appropriate.
> +_supported_fs btrfs
> +_require_test
> +_require_scratch_dev_pool 2
> +
> +_scratch_dev_pool_get 2
> +
> +seed=$(echo $SCRATCH_DEV_POOL | $AWK_PROG '{print $1}')
> +sprout=$(echo $SCRATCH_DEV_POOL | $AWK_PROG '{print $2}')
> +
> +_mkfs_dev $seed
> +_mount $seed $SCRATCH_MNT
> +
> +$XFS_IO_PROG -f -c "pwrite -S 0xab 0 1M" $SCRATCH_MNT/foo > /dev/null
> +_scratch_unmount
> +$BTRFS_TUNE_PROG -S 1 $seed
> +
> +# Mount the seed device and add the rw device
> +_mount -o ro $seed $SCRATCH_MNT
> +$BTRFS_UTIL_PROG device add -f $sprout $SCRATCH_MNT
> +_scratch_unmount
> +
> +# Now remount
> +_mount $sprout $SCRATCH_MNT
> +$XFS_IO_PROG -f -c "pwrite -S 0xcd 0 1M" $SCRATCH_MNT/bar > /dev/null
> +
> +echo --- before delete ----
> +od -x $SCRATCH_MNT/foo
> +od -x $SCRATCH_MNT/bar
> +
> +$BTRFS_UTIL_PROG device delete $seed $SCRATCH_MNT
> +_scratch_unmount
> +_btrfs_forget_or_module_reload
> +_mount $sprout $SCRATCH_MNT
> +
> +echo --- after delete ----
> +od -x $SCRATCH_MNT/foo
> +od -x $SCRATCH_MNT/bar
> +
> +_scratch_dev_pool_put
> +
> +# success, all done
> +status=0
> +exit
> diff --git a/tests/btrfs/225.out b/tests/btrfs/225.out
> new file mode 100644
> index 000000000000..2e5d6ebee2c3
> --- /dev/null
> +++ b/tests/btrfs/225.out
> @@ -0,0 +1,15 @@
> +QA output created by 225
> +--- before delete ----
> +0000000 abab abab abab abab abab abab abab abab
> +*
> +4000000
> +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
> +*
> +4000000
> +--- after delete ----
> +0000000 abab abab abab abab abab abab abab abab
> +*
> +4000000
> +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
> +*
> +4000000
> diff --git a/tests/btrfs/group b/tests/btrfs/group
> index 9ad33baa8119..960981e57eb1 100644
> --- a/tests/btrfs/group
> +++ b/tests/btrfs/group
> @@ -226,3 +226,4 @@
>  222 auto quick send
>  223 auto quick replace trim
>  224 auto quick qgroup
> +225 auto quick volume seed
> --
> 2.25.1
>


-- 
Filipe David Manana,

“Whether you think you can, or you think you can't — you're right.”

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 2/2] btrfs/163: replace sprout instead of seed
  2020-10-20 12:32 ` [PATCH v3 2/2] btrfs/163: replace sprout instead of seed Anand Jain
@ 2020-10-20 12:53   ` Filipe Manana
  0 siblings, 0 replies; 5+ messages in thread
From: Filipe Manana @ 2020-10-20 12:53 UTC (permalink / raw)
  To: Anand Jain; +Cc: fstests, linux-btrfs

On Tue, Oct 20, 2020 at 1:34 PM Anand Jain <anand.jain@oracle.com> wrote:
>
> Make this test case inline with the kernel patch [1] changes
> [1] c6a5d954950c btrfs: fix replace of seed device
>
> So use the sprout device as the replace target instead of the seed device.
> This change is compatible with the older kernels.
>
> While at this, this patch also fixes a typo fix as well.
>
> Signed-off-by: Anand Jain <anand.jain@oracle.com>

Reviewed-by: Filipe Manana <fdmanana@suse.com>

Looks good, thanks.

> ---
> v3:
>   add kernel commit id in the change log and in the header.
>   remove directio in xfs_io.
>   rename replace_seed() to replace_sprout().
>
> v2:
>   none
>
>  tests/btrfs/163     | 25 ++++++++++++++++++-------
>  tests/btrfs/163.out |  5 ++++-
>  2 files changed, 22 insertions(+), 8 deletions(-)
>
> diff --git a/tests/btrfs/163 b/tests/btrfs/163
> index 3047862f9e15..735881c6936e 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
> +#   c6a5d954950c btrfs: fail replace of seed device
> +
>  seq=`basename $0`
>  seqres=$RESULT_DIR/$seq
>  echo "QA output created by $seq"
> @@ -38,6 +42,7 @@ rm -f $seqres.full
>  _supported_fs btrfs
>  _require_command "$BTRFS_TUNE_PROG" btrfstune
>  _require_scratch_dev_pool 3
> +_require_btrfs_forget_or_module_loadable
>
>  _scratch_dev_pool_get 3
>
> @@ -51,7 +56,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
> @@ -63,22 +68,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 -c "pwrite -S 0xcd 0 4M" $SCRATCH_MNT/foobar2 >\
> +               /dev/null
>  }
>
> -replace_seed()
> +replace_sprout()
>  {
> -       _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
> @@ -86,7 +97,7 @@ seed_is_mountable()
>
>  create_seed
>  add_sprout
> -replace_seed
> +replace_sprout
>
>  seed_is_mountable
>
> 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
>


-- 
Filipe David Manana,

“Whether you think you can, or you think you can't — you're right.”

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-10-20 12:53 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-20 12:32 [PATCH v3 0/2] add seed delete test case and fix btrfs/163 Anand Jain
2020-10-20 12:32 ` [PATCH v3 1/2] btrfs: add a test case for btrfs seed device delete Anand Jain
2020-10-20 12:51   ` Filipe Manana
2020-10-20 12:32 ` [PATCH v3 2/2] btrfs/163: replace sprout instead of seed Anand Jain
2020-10-20 12:53   ` Filipe Manana

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).