Linux-BTRFS Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v2 1/2] common/rc: Remove special handing of 'dup' argument for btrfs
@ 2019-10-01  9:04 Nikolay Borisov
  2019-10-01  9:04 ` [PATCH v2 2/2] btrfs: Add test for btrfs balance convert functionality Nikolay Borisov
  0 siblings, 1 reply; 5+ messages in thread
From: Nikolay Borisov @ 2019-10-01  9:04 UTC (permalink / raw)
  To: fstests; +Cc: linux-btrfs, Nikolay Borisov

_scratch_pool_mkfs special cases the command executed when 'dup' option
is used when creating a filesystem. This is wrong since 'dup' works
for all profiles and number of devices. This bug manifested while
exercising btrfs' balance argument combinations test.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
V2:
 * No change since v1

 common/rc | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/common/rc b/common/rc
index 9f2c252e5aa5..1b150cbad2f6 100644
--- a/common/rc
+++ b/common/rc
@@ -885,13 +885,7 @@ _scratch_pool_mkfs()
 {
     case $FSTYP in
     btrfs)
-        # if dup profile is in mkfs options call _scratch_mkfs instead
-        # because dup profile only works with single device
-        if [[ "$*" =~ dup ]]; then
-            _scratch_mkfs $*
-        else
-            $MKFS_BTRFS_PROG $MKFS_OPTIONS $* $SCRATCH_DEV_POOL > /dev/null
-        fi
+        $MKFS_BTRFS_PROG $MKFS_OPTIONS $* $SCRATCH_DEV_POOL > /dev/null
         ;;
     *)
         echo "_scratch_pool_mkfs is not implemented for $FSTYP" 1>&2
-- 
2.7.4


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

* [PATCH v2 2/2] btrfs: Add test for btrfs balance convert functionality
  2019-10-01  9:04 [PATCH v2 1/2] common/rc: Remove special handing of 'dup' argument for btrfs Nikolay Borisov
@ 2019-10-01  9:04 ` Nikolay Borisov
  2019-10-01  9:05   ` Nikolay Borisov
  2019-10-05 17:53   ` Eryu Guan
  0 siblings, 2 replies; 5+ messages in thread
From: Nikolay Borisov @ 2019-10-01  9:04 UTC (permalink / raw)
  To: fstests; +Cc: linux-btrfs, Nikolay Borisov

Add basic test to ensure btrfs conversion functionality is tested. This test
exercies conversion to all possible types of the data portion. This is sufficient
since from the POV of relocation we are only moving blockgroups. 

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 tests/btrfs/194     | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/btrfs/194.out |  2 ++
 tests/btrfs/group   |  1 +
 3 files changed, 87 insertions(+)
 create mode 100755 tests/btrfs/194
 create mode 100644 tests/btrfs/194.out

diff --git a/tests/btrfs/194 b/tests/btrfs/194
new file mode 100755
index 000000000000..39b6e0a969c1
--- /dev/null
+++ b/tests/btrfs/194
@@ -0,0 +1,84 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2019 SUSE Linux Products GmbH. All Rights Reserved.
+#
+# FS QA Test 194
+#
+# Test raid profile conversion. It's sufficient to test all dest profiles as 
+# source profiles just rely on being able to read the metadata. 
+#
+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
+_supported_os Linux
+_require_scratch_dev_pool 4
+
+
+declare -a TEST_VECTORS=(
+# $nr_dev_min:$data:$metadata:$data_convert:$metadata_convert
+"4:single:raid1"
+"4:single:raid0"
+"4:single:raid10"
+"4:single:dup"
+"4:single:raid5"
+"4:single:raid6"
+"2:raid1:single"
+)
+
+run_testcase() {
+	IFS=':' read -ra args <<< $1
+	num_disks=${args[0]}
+	src_type=${args[1]}
+	dst_type=${args[2]}
+
+	_scratch_dev_pool_get $num_disks
+
+	echo "=== Running test: $1 ===" >> $seqres.full 
+
+	_scratch_pool_mkfs -d$src_type >> $seqres.full 2>&1
+	_scratch_mount 
+
+	# Create random filesystem with 20k write ops
+	run_check $FSSTRESS_PROG -d $SCRATCH_MNT -w -n 10000 $FSSTRESS_AVOID
+
+	$BTRFS_UTIL_PROG balance start -f -dconvert=$dst_type $SCRATCH_MNT >> $seqres.full 2>&1
+	[ $? -eq 0 ] || echo "$1: Failed convert"
+
+	$BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
+	[ $? -eq 0 ] || echo "$1: Scrub failed"
+
+	_scratch_unmount
+	_check_btrfs_filesystem $SCRATCH_DEV
+	_scratch_dev_pool_put
+}
+
+for i in "${TEST_VECTORS[@]}"; do 
+	run_testcase $i
+done
+
+echo "Silence is golden"
+status=0
+exit
diff --git a/tests/btrfs/194.out b/tests/btrfs/194.out
new file mode 100644
index 000000000000..7bfd50ffb5a4
--- /dev/null
+++ b/tests/btrfs/194.out
@@ -0,0 +1,2 @@
+QA output created by 194
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index b92cb12ca66f..a2c0ad87d0f6 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -196,3 +196,4 @@
 191 auto quick send dedupe
 192 auto replay snapshot stress
 193 auto quick qgroup enospc limit
+194 auto volume balance
-- 
2.7.4


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

* Re: [PATCH v2 2/2] btrfs: Add test for btrfs balance convert functionality
  2019-10-01  9:04 ` [PATCH v2 2/2] btrfs: Add test for btrfs balance convert functionality Nikolay Borisov
@ 2019-10-01  9:05   ` Nikolay Borisov
  2019-10-05 17:53   ` Eryu Guan
  1 sibling, 0 replies; 5+ messages in thread
From: Nikolay Borisov @ 2019-10-01  9:05 UTC (permalink / raw)
  To: fstests; +Cc: linux-btrfs



On 1.10.19 г. 12:04 ч., Nikolay Borisov wrote:
> Add basic test to ensure btrfs conversion functionality is tested. This test
> exercies conversion to all possible types of the data portion. This is sufficient
> since from the POV of relocation we are only moving blockgroups. 
> 
> Signed-off-by: Nikolay Borisov <nborisov@suse.com>

V2:
 * Only test all possible destination profiles, this reduces the
test run times massively.

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

* Re: [PATCH v2 2/2] btrfs: Add test for btrfs balance convert functionality
  2019-10-01  9:04 ` [PATCH v2 2/2] btrfs: Add test for btrfs balance convert functionality Nikolay Borisov
  2019-10-01  9:05   ` Nikolay Borisov
@ 2019-10-05 17:53   ` Eryu Guan
  2019-10-05 23:21     ` Qu Wenruo
  1 sibling, 1 reply; 5+ messages in thread
From: Eryu Guan @ 2019-10-05 17:53 UTC (permalink / raw)
  To: Nikolay Borisov, Qu Wenruo; +Cc: fstests, linux-btrfs

Hi Qu,

On Tue, Oct 01, 2019 at 12:04:19PM +0300, Nikolay Borisov wrote:
> Add basic test to ensure btrfs conversion functionality is tested. This test
> exercies conversion to all possible types of the data portion. This is sufficient
> since from the POV of relocation we are only moving blockgroups. 
> 
> Signed-off-by: Nikolay Borisov <nborisov@suse.com>

Would you please help review this v2 as well? Thanks a lot!

Eryu

> ---
>  tests/btrfs/194     | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>  tests/btrfs/194.out |  2 ++
>  tests/btrfs/group   |  1 +
>  3 files changed, 87 insertions(+)
>  create mode 100755 tests/btrfs/194
>  create mode 100644 tests/btrfs/194.out
> 
> diff --git a/tests/btrfs/194 b/tests/btrfs/194
> new file mode 100755
> index 000000000000..39b6e0a969c1
> --- /dev/null
> +++ b/tests/btrfs/194
> @@ -0,0 +1,84 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (c) 2019 SUSE Linux Products GmbH. All Rights Reserved.
> +#
> +# FS QA Test 194
> +#
> +# Test raid profile conversion. It's sufficient to test all dest profiles as 
> +# source profiles just rely on being able to read the metadata. 
> +#
> +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
> +_supported_os Linux
> +_require_scratch_dev_pool 4
> +
> +
> +declare -a TEST_VECTORS=(
> +# $nr_dev_min:$data:$metadata:$data_convert:$metadata_convert
> +"4:single:raid1"
> +"4:single:raid0"
> +"4:single:raid10"
> +"4:single:dup"
> +"4:single:raid5"
> +"4:single:raid6"
> +"2:raid1:single"
> +)
> +
> +run_testcase() {
> +	IFS=':' read -ra args <<< $1
> +	num_disks=${args[0]}
> +	src_type=${args[1]}
> +	dst_type=${args[2]}
> +
> +	_scratch_dev_pool_get $num_disks
> +
> +	echo "=== Running test: $1 ===" >> $seqres.full 
> +
> +	_scratch_pool_mkfs -d$src_type >> $seqres.full 2>&1
> +	_scratch_mount 
> +
> +	# Create random filesystem with 20k write ops
> +	run_check $FSSTRESS_PROG -d $SCRATCH_MNT -w -n 10000 $FSSTRESS_AVOID
> +
> +	$BTRFS_UTIL_PROG balance start -f -dconvert=$dst_type $SCRATCH_MNT >> $seqres.full 2>&1
> +	[ $? -eq 0 ] || echo "$1: Failed convert"
> +
> +	$BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
> +	[ $? -eq 0 ] || echo "$1: Scrub failed"
> +
> +	_scratch_unmount
> +	_check_btrfs_filesystem $SCRATCH_DEV
> +	_scratch_dev_pool_put
> +}
> +
> +for i in "${TEST_VECTORS[@]}"; do 
> +	run_testcase $i
> +done
> +
> +echo "Silence is golden"
> +status=0
> +exit
> diff --git a/tests/btrfs/194.out b/tests/btrfs/194.out
> new file mode 100644
> index 000000000000..7bfd50ffb5a4
> --- /dev/null
> +++ b/tests/btrfs/194.out
> @@ -0,0 +1,2 @@
> +QA output created by 194
> +Silence is golden
> diff --git a/tests/btrfs/group b/tests/btrfs/group
> index b92cb12ca66f..a2c0ad87d0f6 100644
> --- a/tests/btrfs/group
> +++ b/tests/btrfs/group
> @@ -196,3 +196,4 @@
>  191 auto quick send dedupe
>  192 auto replay snapshot stress
>  193 auto quick qgroup enospc limit
> +194 auto volume balance
> -- 
> 2.7.4
> 

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

* Re: [PATCH v2 2/2] btrfs: Add test for btrfs balance convert functionality
  2019-10-05 17:53   ` Eryu Guan
@ 2019-10-05 23:21     ` Qu Wenruo
  0 siblings, 0 replies; 5+ messages in thread
From: Qu Wenruo @ 2019-10-05 23:21 UTC (permalink / raw)
  To: Eryu Guan, Nikolay Borisov; +Cc: fstests, linux-btrfs



On 2019/10/6 上午1:53, Eryu Guan wrote:
> Hi Qu,
>
> On Tue, Oct 01, 2019 at 12:04:19PM +0300, Nikolay Borisov wrote:
>> Add basic test to ensure btrfs conversion functionality is tested. This test
>> exercies conversion to all possible types of the data portion. This is sufficient
>> since from the POV of relocation we are only moving blockgroups.
>>
>> Signed-off-by: Nikolay Borisov <nborisov@suse.com>

Reviewed-by: Qu Wenruo <wqu@suse.com>

Still one small nitpick inlined below (just small wording, can be fixed
at commit time).

>
> Would you please help review this v2 as well? Thanks a lot!
>
> Eryu
>
>> ---
>>  tests/btrfs/194     | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>>  tests/btrfs/194.out |  2 ++
>>  tests/btrfs/group   |  1 +
>>  3 files changed, 87 insertions(+)
>>  create mode 100755 tests/btrfs/194
>>  create mode 100644 tests/btrfs/194.out
>>
>> diff --git a/tests/btrfs/194 b/tests/btrfs/194
>> new file mode 100755
>> index 000000000000..39b6e0a969c1
>> --- /dev/null
>> +++ b/tests/btrfs/194
>> @@ -0,0 +1,84 @@
>> +#! /bin/bash
>> +# SPDX-License-Identifier: GPL-2.0
>> +# Copyright (c) 2019 SUSE Linux Products GmbH. All Rights Reserved.
>> +#
>> +# FS QA Test 194
>> +#
>> +# Test raid profile conversion. It's sufficient to test all dest profiles as
>> +# source profiles just rely on being able to read the metadata.

data and metadata.

In fact in the test case itself it's purely data.

THanks,
Qu

>> +#
>> +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
>> +_supported_os Linux
>> +_require_scratch_dev_pool 4
>> +
>> +
>> +declare -a TEST_VECTORS=(
>> +# $nr_dev_min:$data:$metadata:$data_convert:$metadata_convert
>> +"4:single:raid1"
>> +"4:single:raid0"
>> +"4:single:raid10"
>> +"4:single:dup"
>> +"4:single:raid5"
>> +"4:single:raid6"
>> +"2:raid1:single"
>> +)
>> +
>> +run_testcase() {
>> +	IFS=':' read -ra args <<< $1
>> +	num_disks=${args[0]}
>> +	src_type=${args[1]}
>> +	dst_type=${args[2]}
>> +
>> +	_scratch_dev_pool_get $num_disks
>> +
>> +	echo "=== Running test: $1 ===" >> $seqres.full
>> +
>> +	_scratch_pool_mkfs -d$src_type >> $seqres.full 2>&1
>> +	_scratch_mount
>> +
>> +	# Create random filesystem with 20k write ops
>> +	run_check $FSSTRESS_PROG -d $SCRATCH_MNT -w -n 10000 $FSSTRESS_AVOID
>> +
>> +	$BTRFS_UTIL_PROG balance start -f -dconvert=$dst_type $SCRATCH_MNT >> $seqres.full 2>&1
>> +	[ $? -eq 0 ] || echo "$1: Failed convert"
>> +
>> +	$BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
>> +	[ $? -eq 0 ] || echo "$1: Scrub failed"
>> +
>> +	_scratch_unmount
>> +	_check_btrfs_filesystem $SCRATCH_DEV
>> +	_scratch_dev_pool_put
>> +}
>> +
>> +for i in "${TEST_VECTORS[@]}"; do
>> +	run_testcase $i
>> +done
>> +
>> +echo "Silence is golden"
>> +status=0
>> +exit
>> diff --git a/tests/btrfs/194.out b/tests/btrfs/194.out
>> new file mode 100644
>> index 000000000000..7bfd50ffb5a4
>> --- /dev/null
>> +++ b/tests/btrfs/194.out
>> @@ -0,0 +1,2 @@
>> +QA output created by 194
>> +Silence is golden
>> diff --git a/tests/btrfs/group b/tests/btrfs/group
>> index b92cb12ca66f..a2c0ad87d0f6 100644
>> --- a/tests/btrfs/group
>> +++ b/tests/btrfs/group
>> @@ -196,3 +196,4 @@
>>  191 auto quick send dedupe
>>  192 auto replay snapshot stress
>>  193 auto quick qgroup enospc limit
>> +194 auto volume balance
>> --
>> 2.7.4
>>

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

end of thread, back to index

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-01  9:04 [PATCH v2 1/2] common/rc: Remove special handing of 'dup' argument for btrfs Nikolay Borisov
2019-10-01  9:04 ` [PATCH v2 2/2] btrfs: Add test for btrfs balance convert functionality Nikolay Borisov
2019-10-01  9:05   ` Nikolay Borisov
2019-10-05 17:53   ` Eryu Guan
2019-10-05 23:21     ` Qu Wenruo

Linux-BTRFS Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-btrfs/0 linux-btrfs/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-btrfs linux-btrfs/ https://lore.kernel.org/linux-btrfs \
		linux-btrfs@vger.kernel.org linux-btrfs@archiver.kernel.org
	public-inbox-index linux-btrfs

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-btrfs


AGPL code for this site: git clone https://public-inbox.org/ public-inbox