summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilipe Manana <fdmanana@suse.com>2025-10-17 19:14:11 +0300
committerDavid Sterba <dsterba@suse.com>2025-11-25 00:10:18 +0300
commitafbc047ab0db1470c1d5ff82788a8a94431dc7e9 (patch)
tree883a0b1b9cd89c371d87eadf51a49ca27e0c20c7
parent4ddb077378aa84d0872fdfce85e7a82fd805ee86 (diff)
downloadlinux-afbc047ab0db1470c1d5ff82788a8a94431dc7e9.tar.xz
btrfs: avoid unnecessary reclaim calculation in priority_reclaim_metadata_space()
If the given ticket was already served (its ->bytes is 0), then we wasted time calculating the metadata reclaim size. So calculate it only after we checked the ticket was not yet served. Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Filipe Manana <fdmanana@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--fs/btrfs/space-info.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c
index 9a072009eec8..b03c015d5d51 100644
--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -1501,7 +1501,6 @@ static void priority_reclaim_metadata_space(struct btrfs_space_info *space_info,
int flush_state = 0;
spin_lock(&space_info->lock);
- to_reclaim = btrfs_calc_reclaim_metadata_size(space_info);
/*
* This is the priority reclaim path, so to_reclaim could be >0 still
* because we may have only satisfied the priority tickets and still
@@ -1513,6 +1512,8 @@ static void priority_reclaim_metadata_space(struct btrfs_space_info *space_info,
return;
}
+ to_reclaim = btrfs_calc_reclaim_metadata_size(space_info);
+
while (flush_state < states_nr) {
spin_unlock(&space_info->lock);
flush_space(space_info, to_reclaim, states[flush_state], false);