summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.com>2026-01-06 17:20:24 +0100
committerDavid Sterba <dsterba@suse.com>2026-04-07 18:56:07 +0200
commit7e1e45a9e42efb77a44f331e5220cdc820a8d924 (patch)
tree939d44f3b126dc0fd320d9e03b16904cd53240e8
parentb753612be0dc64744d6b027c93d32b1f895196e2 (diff)
downloadlinux-7e1e45a9e42efb77a44f331e5220cdc820a8d924.tar.gz
linux-7e1e45a9e42efb77a44f331e5220cdc820a8d924.zip
btrfs: remove duplicate calculation of eb offset in btrfs_bin_search()
In the main search loop the variable 'oil' (offset in folio) is set twice, one duplicated when the key fits completely to the contiguous range. We can remove it and while it's just a simple calculation, the binary search loop is executed many times so micro optimizations add up. The code size is reduced by 64 bytes on release config, the loop is reorganized a bit and a few instructions shorter. Reviewed-by: Boris Burkov <boris@bur.io> Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--fs/btrfs/ctree.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c
index 5c68c541de51..eae69e205b28 100644
--- a/fs/btrfs/ctree.c
+++ b/fs/btrfs/ctree.c
@@ -781,7 +781,6 @@ int btrfs_bin_search(const struct extent_buffer *eb, int first_slot,
const unsigned long idx = get_eb_folio_index(eb, offset);
char *kaddr = folio_address(eb->folios[idx]);
- oil = get_eb_offset_in_folio(eb, offset);
tmp = (struct btrfs_disk_key *)(kaddr + oil);
} else {
read_extent_buffer(eb, &unaligned, offset, key_size);