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>
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;
}