diff mbox series

[2/2] btrfs/254: fix test failure in case scratch devices are larger than 50G

Message ID 27997253fd18428b2eb24d3f5ddd19885f058259.1739989076.git.fdmanana@suse.com (mailing list archive)
State New
Headers show
Series fstests: a couple fixes for btrfs/254 | expand

Commit Message

Filipe Manana Feb. 19, 2025, 6:19 p.m. UTC
From: Filipe Manana <fdmanana@suse.com>

If the devices in the scratch pool have a size larger than 50G, then the
test fails due to chunk allocation failure when attempting to create a
multidevice filesystem on $lvdev and $scratch_dev2. This happens because
the $lvdev device has a size of 1G and metadata chunks have a size of 1G
for filesystems with a size greater than 50G, so mkfs fails when it
attempts to allocate chunks since it needs to allocate a 1G metadata
chunk plus a system chunk and a data chunk.

  $ ./check btrfs/254
  FSTYP         -- btrfs
  PLATFORM      -- Linux/x86_64 debian0 6.14.0-rc3-btrfs-next-187+ #1 SMP PREEMPT_DYNAMIC Tue Feb 18 10:53:23 WET 2025
  MKFS_OPTIONS  -- /dev/sdc
  MOUNT_OPTIONS -- /dev/sdc /home/fdmanana/btrfs-tests/scratch_1

  btrfs/254 2s ... [failed, exit status 1]- output mismatch (see /home/fdmanana/git/hub/xfstests/results//btrfs/254.out.bad)
      --- tests/btrfs/254.out	2024-10-07 12:36:15.532225987 +0100
      +++ /home/fdmanana/git/hub/xfstests/results//btrfs/254.out.bad	2025-02-19 18:07:06.479812229 +0000
      @@ -1,5 +1,13 @@
       QA output created by 254
      -Label: none  uuid: <UUID>
      -	Total devices <NUM> FS bytes used <SIZE>
      -	devid <DEVID> size <SIZE> used <SIZE> path SCRATCH_DEV
      -	*** Some devices missing
      +ERROR: not enough free space to allocate chunk
      +btrfs-progs v6.13
      ...
      (Run 'diff -u /home/fdmanana/git/hub/xfstests/tests/btrfs/254.out /home/fdmanana/git/hub/xfstests/results//btrfs/254.out.bad'  to see the entire diff)

  HINT: You _MAY_ be missing kernel fix:
        770c79fb6550 btrfs: harden identification of a stale device

  Ran: btrfs/254
  Failures: btrfs/254
  Failed 1 of 1 tests

Fix this by creating a 2G $lvdev device instead of 1G.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
 tests/btrfs/254 | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Comments

Anand Jain Feb. 20, 2025, 6:45 a.m. UTC | #1
On 20/2/25 02:19, fdmanana@kernel.org wrote:
> From: Filipe Manana <fdmanana@suse.com>
> 
> If the devices in the scratch pool have a size larger than 50G, then the
> test fails due to chunk allocation failure when attempting to create a
> multidevice filesystem on $lvdev and $scratch_dev2. This happens because
> the $lvdev device has a size of 1G and metadata chunks have a size of 1G
> for filesystems with a size greater than 50G, so mkfs fails when it
> attempts to allocate chunks since it needs to allocate a 1G metadata
> chunk plus a system chunk and a data chunk.
> 
>    $ ./check btrfs/254
>    FSTYP         -- btrfs
>    PLATFORM      -- Linux/x86_64 debian0 6.14.0-rc3-btrfs-next-187+ #1 SMP PREEMPT_DYNAMIC Tue Feb 18 10:53:23 WET 2025
>    MKFS_OPTIONS  -- /dev/sdc
>    MOUNT_OPTIONS -- /dev/sdc /home/fdmanana/btrfs-tests/scratch_1
> 
>    btrfs/254 2s ... [failed, exit status 1]- output mismatch (see /home/fdmanana/git/hub/xfstests/results//btrfs/254.out.bad)
>        --- tests/btrfs/254.out	2024-10-07 12:36:15.532225987 +0100
>        +++ /home/fdmanana/git/hub/xfstests/results//btrfs/254.out.bad	2025-02-19 18:07:06.479812229 +0000
>        @@ -1,5 +1,13 @@
>         QA output created by 254
>        -Label: none  uuid: <UUID>
>        -	Total devices <NUM> FS bytes used <SIZE>
>        -	devid <DEVID> size <SIZE> used <SIZE> path SCRATCH_DEV
>        -	*** Some devices missing
>        +ERROR: not enough free space to allocate chunk
>        +btrfs-progs v6.13
>        ...
>        (Run 'diff -u /home/fdmanana/git/hub/xfstests/tests/btrfs/254.out /home/fdmanana/git/hub/xfstests/results//btrfs/254.out.bad'  to see the entire diff)
> 
>    HINT: You _MAY_ be missing kernel fix:
>          770c79fb6550 btrfs: harden identification of a stale device
> 
>    Ran: btrfs/254
>    Failures: btrfs/254
>    Failed 1 of 1 tests
> 
> Fix this by creating a 2G $lvdev device instead of 1G.
> 
> Signed-off-by: Filipe Manana <fdmanana@suse.com>
> ---
>   tests/btrfs/254 | 7 +++++--
>   1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/btrfs/254 b/tests/btrfs/254
> index 6523389b..ec303e24 100755
> --- a/tests/btrfs/254
> +++ b/tests/btrfs/254
> @@ -44,8 +44,11 @@ _scratch_dev_pool_get 3
>   
>   setup_dmdev()
>   {
> -	# Some small size.
> -	size=$((1024 * 1024 * 1024))
> +	# On filesystems up to 50G the metadata chunk size if 256M, but on
                                                             ^s
Typo if->is.

> +	# larger ones it's 1G, so use 2G to ensure the test doesn't fail with
> +	# -ENOSPC when running mkfs against $lvdev and $scratch_dev2 in case
> +	# the device at $scratch_dev2 has more capacity than 50G.
> +	size=$((2 * 1024 * 1024 * 1024))
>   	size_in_sector=$((size / 512))

Reviewed-by: Anand Jain <anand.jain@oracle.com>

Fixed and applied to for-next.

Thanks, Anand

>   
>   	table="0 $size_in_sector linear $SCRATCH_DEV 0"
diff mbox series

Patch

diff --git a/tests/btrfs/254 b/tests/btrfs/254
index 6523389b..ec303e24 100755
--- a/tests/btrfs/254
+++ b/tests/btrfs/254
@@ -44,8 +44,11 @@  _scratch_dev_pool_get 3
 
 setup_dmdev()
 {
-	# Some small size.
-	size=$((1024 * 1024 * 1024))
+	# On filesystems up to 50G the metadata chunk size if 256M, but on
+	# larger ones it's 1G, so use 2G to ensure the test doesn't fail with
+	# -ENOSPC when running mkfs against $lvdev and $scratch_dev2 in case
+	# the device at $scratch_dev2 has more capacity than 50G.
+	size=$((2 * 1024 * 1024 * 1024))
 	size_in_sector=$((size / 512))
 
 	table="0 $size_in_sector linear $SCRATCH_DEV 0"