summaryrefslogtreecommitdiff
path: root/fs/bcachefs/btree_iter.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/bcachefs/btree_iter.c')
-rw-r--r--fs/bcachefs/btree_iter.c33
1 files changed, 8 insertions, 25 deletions
diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c
index f4a1fdb5931a..dd716b35a11d 100644
--- a/fs/bcachefs/btree_iter.c
+++ b/fs/bcachefs/btree_iter.c
@@ -2448,27 +2448,10 @@ struct bkey_s_c bch2_btree_iter_peek_max(struct btree_trans *trans, struct btree
continue;
}
- if (!(iter->flags & BTREE_ITER_nofilter_whiteouts)) {
- /*
- * KEY_TYPE_extent_whiteout indicates that there
- * are no extents that overlap with this
- * whiteout - meaning bkey_start_pos() is
- * monotonically increasing when including
- * KEY_TYPE_extent_whiteout (not
- * KEY_TYPE_whiteout).
- *
- * Without this @end wouldn't be able to
- * terminate searches and we'd have to scan
- * through tons of whiteouts:
- */
- if (k.k->type == KEY_TYPE_extent_whiteout &&
- bkey_ge(k.k->p, end))
- goto end;
-
- if (bkey_extent_whiteout(k.k)) {
- search_key = bkey_successor(iter, k.k->p);
- continue;
- }
+ if (bkey_whiteout(k.k) &&
+ !(iter->flags & BTREE_ITER_key_cache_fill)) {
+ search_key = bkey_successor(iter, k.k->p);
+ continue;
}
}
@@ -2728,7 +2711,7 @@ struct bkey_s_c bch2_btree_iter_peek_prev_min(struct btree_trans *trans, struct
saved_path = 0;
}
- if (!bkey_extent_whiteout(k.k)) {
+ if (!bkey_whiteout(k.k)) {
saved_path = btree_path_clone(trans, iter->path,
iter->flags & BTREE_ITER_intent,
_THIS_IP_);
@@ -2741,7 +2724,7 @@ struct bkey_s_c bch2_btree_iter_peek_prev_min(struct btree_trans *trans, struct
continue;
}
- if (bkey_extent_whiteout(k.k)) {
+ if (bkey_whiteout(k.k)) {
search_key = bkey_predecessor(iter, k.k->p);
search_key.snapshot = U32_MAX;
continue;
@@ -2882,9 +2865,9 @@ struct bkey_s_c bch2_btree_iter_peek_slot(struct btree_trans *trans, struct btre
iter->k = *k.k;
}
- if (unlikely(bkey_extent_whiteout(k.k) &&
+ if (unlikely(k.k->type == KEY_TYPE_whiteout &&
(iter->flags & BTREE_ITER_filter_snapshots) &&
- !(iter->flags & BTREE_ITER_nofilter_whiteouts)))
+ !(iter->flags & BTREE_ITER_key_cache_fill)))
iter->k.type = KEY_TYPE_deleted;
} else {
struct bpos next;