diff mbox series

btrfs: zoned: don't skip bgs with 100% zone unusable

Message ID b46794f0115a70b4d0dd1ececa993bd0186a80d8.1710766178.git.jth@kernel.org (mailing list archive)
State New, archived
Headers show
Series btrfs: zoned: don't skip bgs with 100% zone unusable | expand

Commit Message

Johannes Thumshirn March 18, 2024, 12:49 p.m. UTC
From: Johannes Thumshirn <johannes.thumshirn@wdc.com>

Commit f4a9f219411f ("btrfs: do not delete unused block group if it may be
used soon") changed the behaviour of deleting unused block-groups on zoned
filesystems. Starting with this commit, we're using
btrfs_space_info_used() to calculate the number of used bytes in a
space_info. But btrfs_space_info_used() also accounts
btrfs_space_info::bytes_zone_unusable as used bytes.

So if a block group is 100% zone_unusable it is skipped from the deletion
step.

In order not to skip fully zone_unusable block-groups, also check if the
block-group has bytes left that can be used on a zoned filesystem.

Fixes: f4a9f219411f ("btrfs: do not delete unused block group if it may be used soon")
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
---
 fs/btrfs/block-group.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Filipe Manana March 18, 2024, 1:02 p.m. UTC | #1
On Mon, Mar 18, 2024 at 12:50 PM Johannes Thumshirn <jth@kernel.org> wrote:
>
> From: Johannes Thumshirn <johannes.thumshirn@wdc.com>
>
> Commit f4a9f219411f ("btrfs: do not delete unused block group if it may be
> used soon") changed the behaviour of deleting unused block-groups on zoned
> filesystems. Starting with this commit, we're using
> btrfs_space_info_used() to calculate the number of used bytes in a
> space_info. But btrfs_space_info_used() also accounts
> btrfs_space_info::bytes_zone_unusable as used bytes.
>
> So if a block group is 100% zone_unusable it is skipped from the deletion
> step.
>
> In order not to skip fully zone_unusable block-groups, also check if the
> block-group has bytes left that can be used on a zoned filesystem.
>
> Fixes: f4a9f219411f ("btrfs: do not delete unused block group if it may be used soon")
> Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>

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

Looks good, thanks.

> ---
>  fs/btrfs/block-group.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c
> index 5f7587ca1ca7..1e09aeea69c2 100644
> --- a/fs/btrfs/block-group.c
> +++ b/fs/btrfs/block-group.c
> @@ -1559,7 +1559,8 @@ void btrfs_delete_unused_bgs(struct btrfs_fs_info *fs_info)
>                  * needing to allocate extents from the block group.
>                  */
>                 used = btrfs_space_info_used(space_info, true);
> -               if (space_info->total_bytes - block_group->length < used) {
> +               if (space_info->total_bytes - block_group->length < used &&
> +                   block_group->zone_unusable < block_group->length) {
>                         /*
>                          * Add a reference for the list, compensate for the ref
>                          * drop under the "next" label for the
> --
> 2.35.3
>
>
diff mbox series

Patch

diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c
index 5f7587ca1ca7..1e09aeea69c2 100644
--- a/fs/btrfs/block-group.c
+++ b/fs/btrfs/block-group.c
@@ -1559,7 +1559,8 @@  void btrfs_delete_unused_bgs(struct btrfs_fs_info *fs_info)
 		 * needing to allocate extents from the block group.
 		 */
 		used = btrfs_space_info_used(space_info, true);
-		if (space_info->total_bytes - block_group->length < used) {
+		if (space_info->total_bytes - block_group->length < used &&
+		    block_group->zone_unusable < block_group->length) {
 			/*
 			 * Add a reference for the list, compensate for the ref
 			 * drop under the "next" label for the