bcachefs: Minimize the search range used to calculate the mantissa
authorAlan Huang <mmpgouride@gmail.com>
Mon, 12 Aug 2024 08:06:09 +0000 (16:06 +0800)
committerKent Overstreet <kent.overstreet@linux.dev>
Mon, 9 Sep 2024 13:41:49 +0000 (09:41 -0400)
When the search key's mantissa is larger than the node i's, we know that
the search key is larger than the first key of the cacheline corresponding
to node i, so that when we are calculating the mantissa of right side
nodes of node i, the left side of the search range can be the first key
of node i. Once the search range is minimized, the mantissa we are
calculating can have more useful bits, thus reduce the slow path
comparison. Besides, we can now remove all the prev array stuff.

Signed-off-by: Alan Huang <mmpgouride@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/bset.c

index 00a821f617a557ad7293e07e84ff9754f5037269..43b40f6b8c0aabf1d3551601ed0008fbe1f03897 100644 (file)
@@ -616,7 +616,7 @@ static __always_inline void make_bfloat(struct btree *b, struct bset_tree *t,
        struct bkey_packed *m = tree_to_bkey(b, t, j);
        struct bkey_packed *l = is_power_of_2(j)
                ? min_key
-               : tree_to_prev_bkey(b, t, j >> ffs(j));
+               : tree_to_bkey(b, t, j >> ffs(j));
        struct bkey_packed *r = is_power_of_2(j + 1)
                ? max_key
                : tree_to_bkey(b, t, j >> (ffz(j) + 1));