bcachefs: Better iterator picking
Avoid cloning iterators if we don't have to. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
d44a6e350e
commit
a0c9cc1727
@ -2017,10 +2017,14 @@ struct btree_iter *__bch2_trans_get_iter(struct btree_trans *trans,
|
||||
if (iter->btree_id != btree_id)
|
||||
continue;
|
||||
|
||||
if (best &&
|
||||
bkey_cmp(bpos_diff(best->real_pos, pos),
|
||||
bpos_diff(iter->real_pos, pos)) < 0)
|
||||
continue;
|
||||
if (best) {
|
||||
int cmp = bkey_cmp(bpos_diff(best->real_pos, pos),
|
||||
bpos_diff(iter->real_pos, pos));
|
||||
|
||||
if (cmp < 0 ||
|
||||
((cmp == 0 && btree_iter_keep(trans, iter))))
|
||||
continue;
|
||||
}
|
||||
|
||||
best = iter;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user