diff mbox

[v3,2/2] btrfs-progs: test/mkfs: Test if the minimal device size is valid

Message ID 20171027005324.17950-2-wqu@suse.com (mailing list archive)
State New, archived
Headers show

Commit Message

Qu Wenruo Oct. 27, 2017, 12:53 a.m. UTC
New test case to test if the minimal device size given by "mkfs.btrfs"
failure case is valid.

Signed-off-by: Qu Wenruo <wqu@suse.com>
---
 tests/mkfs-tests/010-small-image/test.sh | 49 ++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100755 tests/mkfs-tests/010-small-image/test.sh

Comments

David Sterba Oct. 27, 2017, 4:59 p.m. UTC | #1
On Fri, Oct 27, 2017 at 08:53:24AM +0800, Qu Wenruo wrote:
> New test case to test if the minimal device size given by "mkfs.btrfs"
> failure case is valid.
> 
> Signed-off-by: Qu Wenruo <wqu@suse.com>
> ---
>  tests/mkfs-tests/010-small-image/test.sh | 49 ++++++++++++++++++++++++++++++++
>  1 file changed, 49 insertions(+)
>  create mode 100755 tests/mkfs-tests/010-small-image/test.sh
> 
> diff --git a/tests/mkfs-tests/010-small-image/test.sh b/tests/mkfs-tests/010-small-image/test.sh
> new file mode 100755
> index 000000000000..f55760df061f
> --- /dev/null
> +++ b/tests/mkfs-tests/010-small-image/test.sh
> @@ -0,0 +1,49 @@
> +#!/bin/bash
> +# test if the reported minimal size of mkfs.btrfs is valid
> +
> +source "$TOP"/tests/common
> +
> +check_prereq mkfs.btrfs
> +check_prereq btrfs
> +
> +setup_root_helper
> +
> +do_test()
> +{
> +	# Well, 1M small enough to fail, we just use the output
> +	# to get the minimal device size
> +	prepare_test_dev 1M
> +	output=$(run_mustfail_stdout "mkfs.btrfs for small image" \
> +		 "$TOP"/mkfs.btrfs -f $@ "$TEST_DEV")
> +	good_size=$(echo "$output" | grep -oP "(?<=is )\d+")
> +
> +	prepare_test_dev "$good_size"
> +	run_check "$TOP"/mkfs.btrfs -f $@ "$TEST_DEV"
> +	run_check $SUDO_HELPER mount "$TEST_DEV" "$TEST_MNT"
> +	run_check $SUDO_HELPER umount "$TEST_MNT"

There are helpers for the default mounts, you can use them to save some
typing: run_check_mount_test_dev and run_check_umount_test_dev.

> +}
> +
> +do_test -n 4k	-m single	-d single

I don't seem to get this test to work, it fails with this in the log:

=== Entering btrfs-progs/tests/mkfs-tests/010-small-image
$TEST_DEV not given, use btrfs-progs/test/test.img as fallback
############### btrfs-progs/mkfs.btrfs -f -n 4k -m single -d single btrfs-progs/tests/test.img
btrfs-progs v4.13.3-61-g0615ffa351c2
See http://btrfs.wiki.kernel.org for more information.

failed (expected): btrfs-progs/mkfs.btrfs -f -n 4k -m single -d single btrfs-progs/tests/test.img
############### btrfs-progs/mkfs.btrfs -f -n 4k -m single -d single btrfs-progs/tests/test.img
btrfs-progs v4.13.3-61-g0615ffa351c2
See http://btrfs.wiki.kernel.org for more information.

Label:              (null)
UUID:               b9b55b1b-4096-46ee-acd0-15151a8050d6
Node size:          4096
Sector size:        4096
Filesystem size:    16.00MiB
Block group profiles:
  Data:             single            1.56MiB
  Metadata:         single            1.56MiB
  System:           single            4.00MiB
SSD detected:       no
Incompat features:  extref, skinny-metadata
Number of devices:  1
Devices:
   ID        SIZE  PATH
    1    16.00MiB  btrfs-progs/tests/test.img

############### root_helper mount btrfs-progs/tests/test.img btrfs-progs/tests/mnt
############### root_helper umount btrfs-progs/tests/mnt
############### btrfs-progs/mkfs.btrfs -f -n 4k -m single -d dup btrfs-progs/tests/test.img
btrfs-progs v4.13.3-61-g0615ffa351c2
See http://btrfs.wiki.kernel.org for more information.

failed (expected): btrfs-progs/mkfs.btrfs -f -n 4k -m single -d dup btrfs-progs/tests/test.img
############### btrfs-progs/mkfs.btrfs -f -n 4k -m single -d dup btrfs-progs/tests/test.img
ERROR: not enough free space to allocate chunk
btrfs-progs v4.13.3-61-g0615ffa351c2
See http://btrfs.wiki.kernel.org for more information.

failed: btrfs-progs/mkfs.btrfs -f -n 4k -m single -d dup btrfs-progs/tests/test.img
test failed for case 010-small-image
---

The output is unexpected and does not contain the minimal size. The tested
branch is current devel (7141063af3c9a423dda), your mkfs --rootdir rework
patches are there. Can you please have a look?
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Qu Wenruo Oct. 27, 2017, 11:59 p.m. UTC | #2
On 2017年10月28日 00:59, David Sterba wrote:
> On Fri, Oct 27, 2017 at 08:53:24AM +0800, Qu Wenruo wrote:
>> New test case to test if the minimal device size given by "mkfs.btrfs"
>> failure case is valid.
>>
>> Signed-off-by: Qu Wenruo <wqu@suse.com>
>> ---
>>  tests/mkfs-tests/010-small-image/test.sh | 49 ++++++++++++++++++++++++++++++++
>>  1 file changed, 49 insertions(+)
>>  create mode 100755 tests/mkfs-tests/010-small-image/test.sh
>>
>> diff --git a/tests/mkfs-tests/010-small-image/test.sh b/tests/mkfs-tests/010-small-image/test.sh
>> new file mode 100755
>> index 000000000000..f55760df061f
>> --- /dev/null
>> +++ b/tests/mkfs-tests/010-small-image/test.sh
>> @@ -0,0 +1,49 @@
>> +#!/bin/bash
>> +# test if the reported minimal size of mkfs.btrfs is valid
>> +
>> +source "$TOP"/tests/common
>> +
>> +check_prereq mkfs.btrfs
>> +check_prereq btrfs
>> +
>> +setup_root_helper
>> +
>> +do_test()
>> +{
>> +	# Well, 1M small enough to fail, we just use the output
>> +	# to get the minimal device size
>> +	prepare_test_dev 1M
>> +	output=$(run_mustfail_stdout "mkfs.btrfs for small image" \
>> +		 "$TOP"/mkfs.btrfs -f $@ "$TEST_DEV")
>> +	good_size=$(echo "$output" | grep -oP "(?<=is )\d+")
>> +
>> +	prepare_test_dev "$good_size"
>> +	run_check "$TOP"/mkfs.btrfs -f $@ "$TEST_DEV"
>> +	run_check $SUDO_HELPER mount "$TEST_DEV" "$TEST_MNT"
>> +	run_check $SUDO_HELPER umount "$TEST_MNT"
> 
> There are helpers for the default mounts, you can use them to save some
> typing: run_check_mount_test_dev and run_check_umount_test_dev.
> 
>> +}
>> +
>> +do_test -n 4k	-m single	-d single
> 
> I don't seem to get this test to work, it fails with this in the log:

Strange, it passed without problem on my box.

=== Entering /home/adam/btrfs/btrfs-progs/tests/mkfs-tests/010-small-image
$TEST_DEV not given, use /home/adam/btrfs/btrfs-progs/test/test.img as
fallback
############### /home/adam/btrfs/btrfs-progs/mkfs.btrfs -f -n 4k -m
single -d single /home/adam/btrfs/btrfs-progs/tests/test.img
btrfs-progs v4.13.2
See http://btrfs.wiki.kernel.org for more information.

failed (expected): /home/adam/btrfs/btrfs-progs/mkfs.btrfs -f -n 4k -m
single -d single /home/adam/btrfs/btrfs-progs/tests/test.img
############### /home/adam/btrfs/btrfs-progs/mkfs.btrfs -f -n 4k -m
single -d single /home/adam/btrfs/btrfs-progs/tests/test.img
btrfs-progs v4.13.2
See http://btrfs.wiki.kernel.org for more information.

Label:              (null)
UUID:               04213076-9678-420b-b748-5e5b6394e025
Node size:          4096
Sector size:        4096
Filesystem size:    44.00MiB
Block group profiles:
  Data:             single            4.38MiB
  Metadata:         single            4.38MiB
  System:           single            4.00MiB
SSD detected:       no
Incompat features:  extref, skinny-metadata
Number of devices:  1
Devices:
   ID        SIZE  PATH
    1    44.00MiB  /home/adam/btrfs/btrfs-progs/tests/test.img

############### root_helper mount
/home/adam/btrfs/btrfs-progs/tests/test.img
/home/adam/btrfs/btrfs-progs/tests/mnt
############### root_helper umount /home/adam/btrfs/btrfs-progs/tests/mnt
############### /home/adam/btrfs/btrfs-progs/mkfs.btrfs -f -n 4k -m
single -d dup /home/adam/btrfs/btrfs-progs/tests/test.img
btrfs-progs v4.13.2
See http://btrfs.wiki.kernel.org for more information.

failed (expected): /home/adam/btrfs/btrfs-progs/mkfs.btrfs -f -n 4k -m
single -d dup /home/adam/btrfs/btrfs-progs/tests/test.img
############### /home/adam/btrfs/btrfs-progs/mkfs.btrfs -f -n 4k -m
single -d dup /home/adam/btrfs/btrfs-progs/tests/test.img
btrfs-progs v4.13.2
See http://btrfs.wiki.kernel.org for more information.

Label:              (null)
UUID:               f7c3a0db-abf1-4061-99f0-1028ac713ed6
Node size:          4096
Sector size:        4096
Filesystem size:    164.00MiB
Block group profiles:
  Data:             DUP              64.00MiB
  Metadata:         single            8.00MiB
  System:           single            4.00MiB
SSD detected:       no
Incompat features:  extref, skinny-metadata
Number of devices:  1
Devices:
   ID        SIZE  PATH
    1   164.00MiB  /home/adam/btrfs/btrfs-progs/tests/test.img

############### root_helper mount
/home/adam/btrfs/btrfs-progs/tests/test.img
/home/adam/btrfs/btrfs-progs/tests/mnt
############### root_helper umount /home/adam/btrfs/btrfs-progs/tests/mnt


Maybe it's related to the preparation patch for that?
Like the prepare_test_dev() function modification?

Thanks,
Qu
> 
> === Entering btrfs-progs/tests/mkfs-tests/010-small-image
> $TEST_DEV not given, use btrfs-progs/test/test.img as fallback
> ############### btrfs-progs/mkfs.btrfs -f -n 4k -m single -d single btrfs-progs/tests/test.img
> btrfs-progs v4.13.3-61-g0615ffa351c2
> See http://btrfs.wiki.kernel.org for more information.
> 
> failed (expected): btrfs-progs/mkfs.btrfs -f -n 4k -m single -d single btrfs-progs/tests/test.img
> ############### btrfs-progs/mkfs.btrfs -f -n 4k -m single -d single btrfs-progs/tests/test.img
> btrfs-progs v4.13.3-61-g0615ffa351c2
> See http://btrfs.wiki.kernel.org for more information.
> 
> Label:              (null)
> UUID:               b9b55b1b-4096-46ee-acd0-15151a8050d6
> Node size:          4096
> Sector size:        4096
> Filesystem size:    16.00MiB
> Block group profiles:
>   Data:             single            1.56MiB
>   Metadata:         single            1.56MiB
>   System:           single            4.00MiB
> SSD detected:       no
> Incompat features:  extref, skinny-metadata
> Number of devices:  1
> Devices:
>    ID        SIZE  PATH
>     1    16.00MiB  btrfs-progs/tests/test.img
> 
> ############### root_helper mount btrfs-progs/tests/test.img btrfs-progs/tests/mnt
> ############### root_helper umount btrfs-progs/tests/mnt
> ############### btrfs-progs/mkfs.btrfs -f -n 4k -m single -d dup btrfs-progs/tests/test.img
> btrfs-progs v4.13.3-61-g0615ffa351c2
> See http://btrfs.wiki.kernel.org for more information.
> 
> failed (expected): btrfs-progs/mkfs.btrfs -f -n 4k -m single -d dup btrfs-progs/tests/test.img
> ############### btrfs-progs/mkfs.btrfs -f -n 4k -m single -d dup btrfs-progs/tests/test.img
> ERROR: not enough free space to allocate chunk
> btrfs-progs v4.13.3-61-g0615ffa351c2
> See http://btrfs.wiki.kernel.org for more information.
> 
> failed: btrfs-progs/mkfs.btrfs -f -n 4k -m single -d dup btrfs-progs/tests/test.img
> test failed for case 010-small-image
> ---
> 
> The output is unexpected and does not contain the minimal size. The tested
> branch is current devel (7141063af3c9a423dda), your mkfs --rootdir rework
> patches are there. Can you please have a look?
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
Qu Wenruo Oct. 30, 2017, 12:53 a.m. UTC | #3
On 2017年10月28日 00:59, David Sterba wrote:
> On Fri, Oct 27, 2017 at 08:53:24AM +0800, Qu Wenruo wrote:
>> New test case to test if the minimal device size given by "mkfs.btrfs"
>> failure case is valid.
>>
>> Signed-off-by: Qu Wenruo <wqu@suse.com>
>> ---
>>  tests/mkfs-tests/010-small-image/test.sh | 49 ++++++++++++++++++++++++++++++++
>>  1 file changed, 49 insertions(+)
>>  create mode 100755 tests/mkfs-tests/010-small-image/test.sh
>>
>> diff --git a/tests/mkfs-tests/010-small-image/test.sh b/tests/mkfs-tests/010-small-image/test.sh
>> new file mode 100755
>> index 000000000000..f55760df061f
>> --- /dev/null
>> +++ b/tests/mkfs-tests/010-small-image/test.sh
>> @@ -0,0 +1,49 @@
>> +#!/bin/bash
>> +# test if the reported minimal size of mkfs.btrfs is valid
>> +
>> +source "$TOP"/tests/common
>> +
>> +check_prereq mkfs.btrfs
>> +check_prereq btrfs
>> +
>> +setup_root_helper
>> +
>> +do_test()
>> +{
>> +	# Well, 1M small enough to fail, we just use the output
>> +	# to get the minimal device size
>> +	prepare_test_dev 1M
>> +	output=$(run_mustfail_stdout "mkfs.btrfs for small image" \
>> +		 "$TOP"/mkfs.btrfs -f $@ "$TEST_DEV")
>> +	good_size=$(echo "$output" | grep -oP "(?<=is )\d+")
>> +
>> +	prepare_test_dev "$good_size"
>> +	run_check "$TOP"/mkfs.btrfs -f $@ "$TEST_DEV"
>> +	run_check $SUDO_HELPER mount "$TEST_DEV" "$TEST_MNT"
>> +	run_check $SUDO_HELPER umount "$TEST_MNT"
> 
> There are helpers for the default mounts, you can use them to save some
> typing: run_check_mount_test_dev and run_check_umount_test_dev.
> 
>> +}
>> +
>> +do_test -n 4k	-m single	-d single
> 
> I don't seem to get this test to work, it fails with this in the log:

Forgot to mention, the test case is for minimal-device-size fix patchset:
Enhance minimal device size calculation to fix mkfs failure on small file

Considering I sent too many patchset recently and most of them have
dependency, should I resend a big patchset to address the dependency?

IIRC the dependency should be:
rootdir rework -> rootdir refactor -> minimal device size fix (including
test cases)

And later mkfs qgroup support also depends on rootdir rework (just
conflicts, not code dependency)

Thanks,
Qu
> 
> === Entering btrfs-progs/tests/mkfs-tests/010-small-image
> $TEST_DEV not given, use btrfs-progs/test/test.img as fallback
> ############### btrfs-progs/mkfs.btrfs -f -n 4k -m single -d single btrfs-progs/tests/test.img
> btrfs-progs v4.13.3-61-g0615ffa351c2
> See http://btrfs.wiki.kernel.org for more information.
> 
> failed (expected): btrfs-progs/mkfs.btrfs -f -n 4k -m single -d single btrfs-progs/tests/test.img
> ############### btrfs-progs/mkfs.btrfs -f -n 4k -m single -d single btrfs-progs/tests/test.img
> btrfs-progs v4.13.3-61-g0615ffa351c2
> See http://btrfs.wiki.kernel.org for more information.
> 
> Label:              (null)
> UUID:               b9b55b1b-4096-46ee-acd0-15151a8050d6
> Node size:          4096
> Sector size:        4096
> Filesystem size:    16.00MiB
> Block group profiles:
>   Data:             single            1.56MiB
>   Metadata:         single            1.56MiB
>   System:           single            4.00MiB
> SSD detected:       no
> Incompat features:  extref, skinny-metadata
> Number of devices:  1
> Devices:
>    ID        SIZE  PATH
>     1    16.00MiB  btrfs-progs/tests/test.img
> 
> ############### root_helper mount btrfs-progs/tests/test.img btrfs-progs/tests/mnt
> ############### root_helper umount btrfs-progs/tests/mnt
> ############### btrfs-progs/mkfs.btrfs -f -n 4k -m single -d dup btrfs-progs/tests/test.img
> btrfs-progs v4.13.3-61-g0615ffa351c2
> See http://btrfs.wiki.kernel.org for more information.
> 
> failed (expected): btrfs-progs/mkfs.btrfs -f -n 4k -m single -d dup btrfs-progs/tests/test.img
> ############### btrfs-progs/mkfs.btrfs -f -n 4k -m single -d dup btrfs-progs/tests/test.img
> ERROR: not enough free space to allocate chunk
> btrfs-progs v4.13.3-61-g0615ffa351c2
> See http://btrfs.wiki.kernel.org for more information.
> 
> failed: btrfs-progs/mkfs.btrfs -f -n 4k -m single -d dup btrfs-progs/tests/test.img
> test failed for case 010-small-image
> ---
> 
> The output is unexpected and does not contain the minimal size. The tested
> branch is current devel (7141063af3c9a423dda), your mkfs --rootdir rework
> patches are there. Can you please have a look?
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
diff mbox

Patch

diff --git a/tests/mkfs-tests/010-small-image/test.sh b/tests/mkfs-tests/010-small-image/test.sh
new file mode 100755
index 000000000000..f55760df061f
--- /dev/null
+++ b/tests/mkfs-tests/010-small-image/test.sh
@@ -0,0 +1,49 @@ 
+#!/bin/bash
+# test if the reported minimal size of mkfs.btrfs is valid
+
+source "$TOP"/tests/common
+
+check_prereq mkfs.btrfs
+check_prereq btrfs
+
+setup_root_helper
+
+do_test()
+{
+	# Well, 1M small enough to fail, we just use the output
+	# to get the minimal device size
+	prepare_test_dev 1M
+	output=$(run_mustfail_stdout "mkfs.btrfs for small image" \
+		 "$TOP"/mkfs.btrfs -f $@ "$TEST_DEV")
+	good_size=$(echo "$output" | grep -oP "(?<=is )\d+")
+
+	prepare_test_dev "$good_size"
+	run_check "$TOP"/mkfs.btrfs -f $@ "$TEST_DEV"
+	run_check $SUDO_HELPER mount "$TEST_DEV" "$TEST_MNT"
+	run_check $SUDO_HELPER umount "$TEST_MNT"
+}
+
+do_test -n 4k	-m single	-d single
+do_test -n 4k	-m single	-d dup
+do_test -n 4k	-m dup		-d single
+do_test -n 4k	-m dup		-d dup
+
+do_test -n 8k	-m single	-d single
+do_test -n 8k	-m single	-d dup
+do_test -n 8k	-m dup		-d single
+do_test -n 8k	-m dup		-d dup
+
+do_test -n 16k	-m single	-d single
+do_test -n 16k	-m single	-d dup
+do_test -n 16k	-m dup		-d single
+do_test -n 16k	-m dup		-d dup
+
+do_test -n 32k	-m single	-d single
+do_test -n 32k	-m single	-d dup
+do_test -n 32k	-m dup		-d single
+do_test -n 32k	-m dup		-d dup
+
+do_test -n 64k	-m single	-d single
+do_test -n 64k	-m single	-d dup
+do_test -n 64k	-m dup		-d single
+do_test -n 64k	-m dup		-d dup