diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2020-01-07 04:25:09 +0100 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 23:08:34 +0200 |
commit | 9626aeb167144db2ba235bde5f9f1863c3ef354b (patch) | |
tree | d92648cf2688e9433457373bf2af9ff85340e6c9 /fs/bcachefs/bset.c | |
parent | bcachefs: Don't lose needs_whiteout in overwrite path (diff) | |
download | linux-9626aeb167144db2ba235bde5f9f1863c3ef354b.tar.xz linux-9626aeb167144db2ba235bde5f9f1863c3ef354b.zip |
bcachefs: Rework iter->pos handling
- Rework some of the helper comparison functions for consistency
- Currently trying to refactor all the logic that's different for
extents in the btree iterator code. The main difference is that for non
extents we search for a key greater than or equal to the search key,
while for extents we search for a key strictly greater than the search
key (iter->pos).
So that logic is now handled by btree_iter_search_key(), which computes
the real search key based on iter->pos and whether or not we're
searching for a key >= or > iter->pos.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/bset.c')
-rw-r--r-- | fs/bcachefs/bset.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/fs/bcachefs/bset.c b/fs/bcachefs/bset.c index a0bd6af67190..cff664ab75fa 100644 --- a/fs/bcachefs/bset.c +++ b/fs/bcachefs/bset.c @@ -1380,21 +1380,21 @@ struct bkey_packed *bch2_bset_search_linear(struct btree *b, { if (lossy_packed_search) while (m != btree_bkey_last(b, t) && - bkey_iter_cmp_p_or_unp(b, search, lossy_packed_search, - m) > 0) + bkey_iter_cmp_p_or_unp(b, m, + lossy_packed_search, search) < 0) m = bkey_next_skip_noops(m, btree_bkey_last(b, t)); if (!packed_search) while (m != btree_bkey_last(b, t) && - bkey_iter_pos_cmp(b, search, m) > 0) + bkey_iter_pos_cmp(b, m, search) < 0) m = bkey_next_skip_noops(m, btree_bkey_last(b, t)); if (btree_keys_expensive_checks(b)) { struct bkey_packed *prev = bch2_bkey_prev_all(b, t, m); BUG_ON(prev && - bkey_iter_cmp_p_or_unp(b, search, packed_search, - prev) <= 0); + bkey_iter_cmp_p_or_unp(b, prev, + packed_search, search) >= 0); } return m; |