FAILED: patch "[PATCH] btrfs: zoned: drop space_info->active_total_bytes" failed to apply to 6.2-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 6.2-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.2.y
git checkout FETCH_HEAD
git cherry-pick -x e15acc25880cf048dba9df94d76ed7e7e10040e6
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '[email protected]' --subject-prefix 'PATCH 6.2.y' HEAD^..
Possible dependencies:
e15acc25880c ("btrfs: zoned: drop space_info->active_total_bytes")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From e15acc25880cf048dba9df94d76ed7e7e10040e6 Mon Sep 17 00:00:00 2001
From: Naohiro Aota <[email protected]>
Date: Mon, 13 Mar 2023 16:06:14 +0900
Subject: [PATCH] btrfs: zoned: drop space_info->active_total_bytes
The space_info->active_total_bytes is no longer necessary as we now count the region of newly allocated block group as zone_unusable. Drop its usage.
fs/btrfs/block-group.c +0 -6
@@ -1175,14 +1175,8 @@ int btrfs_remove_block_group(struct btrfs_trans_handle *trans, < block_group->zone_unusable);WARN_ON (block_group->space_info->disk_total < block_group->length * factor); -WARN_ON (test_bit (BLOCK_GROUP_FLAG_ZONE_IS_ACTIVE , - &block_group->runtime_flags) && - block_group->space_info->active_total_bytes - < block_group->length); } block_group->space_info->total_bytes -= block_group->length; -if (test_bit (BLOCK_GROUP_FLAG_ZONE_IS_ACTIVE , &block_group->runtime_flags)) - block_group->space_info->active_total_bytes -= block_group->length; block_group->space_info->bytes_readonly -= (block_group->length - block_group->zone_unusable); block_group->space_info->bytes_zone_unusable -=
fs/btrfs/space-info.c +9 -31
@@ -308,8 +308,6 @@ void btrfs_add_bg_to_space_info(struct btrfs_fs_info *info,ASSERT (found);spin_lock (&found->lock); found->total_bytes += block_group->length; -if (test_bit (BLOCK_GROUP_FLAG_ZONE_IS_ACTIVE , &block_group->runtime_flags)) - found->active_total_bytes += block_group->length; found->disk_total += block_group->length * factor; found->bytes_used += block_group->used; found->disk_used += block_group->used * factor;
@@ -379,22 +377,6 @@ static u64 calc_available_free_space(struct btrfs_fs_info *fs_info,return avail; } -static inline u64 writable_total_bytes (struct btrfs_fs_info *fs_info, -struct btrfs_space_info *space_info) -{ -/* -* On regular filesystem, all total_bytes are always writable. On zoned -* filesystem, there may be a limitation imposed by max_active_zones. -* For metadata allocation, we cannot finish an existing active block -* group to avoid a deadlock. Thus, we need to consider only the active -* groups to be writable for metadata space. -*/ -if (!btrfs_is_zoned (fs_info) || (space_info->flags &BTRFS_BLOCK_GROUP_DATA )) -return space_info->total_bytes; - -return space_info->active_total_bytes; -} -int btrfs_can_overcommit (struct btrfs_fs_info *fs_info,struct btrfs_space_info *space_info,u64 bytes,enum btrfs_reserve_flush_enum flush)
@@ -413,7 +395,7 @@ int btrfs_can_overcommit(struct btrfs_fs_info *fs_info,else avail =calc_available_free_space (fs_info, space_info, flush); -if (used + bytes <writable_total_bytes (fs_info, space_info) + avail) +if (used + bytes < space_info->total_bytes + avail)return 1 ;return 0 ; }
@@ -449,7 +431,7 @@ void btrfs_try_granting_tickets(struct btrfs_fs_info *fs_info, ticket = list_first_entry(head, struct reserve_ticket, list);/* Check and see if our ticket can be satisfied now. */ -if ((used + ticket->bytes <=writable_total_bytes (fs_info, space_info)) || +if ((used + ticket->bytes <= space_info->total_bytes) ||btrfs_can_overcommit (fs_info, space_info, ticket->bytes, flush)) { btrfs_space_info_update_bytes_may_use(fs_info,
@@ -829,7 +811,6 @@ btrfs_calc_reclaim_metadata_size(struct btrfs_fs_info *fs_info, {u64 used;u64 avail; -u64 total;u64 to_reclaim = space_info->reclaim_size;lockdep_assert_held (&space_info->lock);
@@ -844,9 +825,8 @@ btrfs_calc_reclaim_metadata_size(struct btrfs_fs_info *fs_info,* space. If that's the case add in our overage so we make sure to put * appropriate pressure on the flushing state machine. */ - total =writable_total_bytes (fs_info, space_info); -if (total + avail < used) - to_reclaim += used - (total + avail); +if (space_info->total_bytes + avail < used) + to_reclaim += used - (space_info->total_bytes + avail);return to_reclaim; }
@@ -856,11 +836,10 @@ static bool need_preemptive_reclaim(struct btrfs_fs_info *fs_info, {u64 global_rsv_size = fs_info->global_block_rsv.reserved;u64 ordered, delalloc; -u64 total =writable_total_bytes (fs_info, space_info);u64 thresh;u64 used; - thresh =mult_perc (total,90 ); + thresh =mult_perc (space_info->total_bytes,90 );lockdep_assert_held (&space_info->lock);
@@ -923,8 +902,8 @@ static bool need_preemptive_reclaim(struct btrfs_fs_info *fs_info, BTRFS_RESERVE_FLUSH_ALL); used = space_info->bytes_used + space_info->bytes_reserved + space_info->bytes_readonly + global_rsv_size; -if (used < total) - thresh += total - used; +if (used < space_info->total_bytes) + thresh += space_info->total_bytes - used; thresh >>= space_info->clamp; used = space_info->bytes_pinned;
@@ -1651,7 +1630,7 @@ static int __reserve_bytes(struct btrfs_fs_info *fs_info,* can_overcommit() to ensure we can overcommit to continue. */ if (!pending_tickets && - ((used + orig_bytes <=writable_total_bytes (fs_info, space_info)) || + ((used + orig_bytes <= space_info->total_bytes) ||btrfs_can_overcommit (fs_info, space_info, orig_bytes, flush))) {btrfs_space_info_update_bytes_may_use (fs_info, space_info, orig_bytes);
@@ -1665,8 +1644,7 @@ static int __reserve_bytes(struct btrfs_fs_info *fs_info,*/ if (ret &&unlikely (flush ==BTRFS_RESERVE_FLUSH_EMERGENCY )) { used =btrfs_space_info_used (space_info, false); -if (used + orig_bytes <= -writable_total_bytes (fs_info, space_info)) { +if (used + orig_bytes <= space_info->total_bytes) {btrfs_space_info_update_bytes_may_use (fs_info, space_info, orig_bytes); ret =0 ;
fs/btrfs/space-info.h +0 -2
@@ -96,8 +96,6 @@ struct btrfs_space_info {u64 bytes_may_use;/* number of bytes that may be used for delalloc/allocations */ u64 bytes_readonly;/* total bytes that are read only */ -/* Total bytes in the space, but only accounts active block groups. */ -u64 active_total_bytes;u64 bytes_zone_unusable;/* total bytes that are unusable until resetting the device zone */
fs/btrfs/zoned.c +0 -4
@@ -2316,10 +2316,6 @@ int btrfs_zoned_activate_one_bg(struct btrfs_fs_info *fs_info,if (!btrfs_is_zoned (fs_info) || (space_info->flags &BTRFS_BLOCK_GROUP_DATA ))return 0 ; -/* No more block groups to activate */ -if (space_info->active_total_bytes == space_info->total_bytes) -return 0 ; -for (;;) {int ret;bool need_finish = false;