From: Filipe Manana Date: Fri, 17 Oct 2025 16:14:11 +0000 (+0100) Subject: btrfs: avoid unnecessary reclaim calculation in priority_reclaim_metadata_space() X-Git-Tag: v6.19-rc1~167^2~92 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=afbc047ab0db1470c1d5ff82788a8a94431dc7e9;p=thirdparty%2Fkernel%2Flinux.git 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 Signed-off-by: Filipe Manana Reviewed-by: David Sterba Signed-off-by: David Sterba --- diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c index 9a072009eec8f..b03c015d5d51d 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);