struct btree_iter *iter,
struct bpos bucket,
u64 bp_offset,
- struct bch_backpointer bp)
+ struct bch_backpointer bp,
+ unsigned iter_flags)
{
struct bch_fs *c = trans->c;
struct bkey_s_c k;
bp.pos,
0,
min(bp.level, c->btree_roots[bp.btree_id].level),
- 0);
+ iter_flags);
k = bch2_btree_iter_peek_slot(iter);
if (bkey_err(k)) {
bch2_trans_iter_exit(trans, iter);
bbpos_cmp(pos, end) > 0)
return 0;
- k = bch2_backpointer_get_key(trans, &iter, bucket, *bp_offset, bp);
+ k = bch2_backpointer_get_key(trans, &iter, bucket, *bp_offset, bp, 0);
ret = bkey_err(k);
if (ret == -BCH_ERR_backpointer_to_overwritten_btree_node)
return 0;
int bch2_get_next_backpointer(struct btree_trans *, struct bpos, int,
u64 *, struct bch_backpointer *, unsigned);
struct bkey_s_c bch2_backpointer_get_key(struct btree_trans *, struct btree_iter *,
- struct bpos, u64, struct bch_backpointer);
+ struct bpos, u64, struct bch_backpointer,
+ unsigned);
struct btree *bch2_backpointer_get_node(struct btree_trans *, struct btree_iter *,
struct bpos, u64, struct bch_backpointer);
return -EIO;
}
- k = bch2_backpointer_get_key(trans, &iter, bucket, *bp_offset, bp);
+ k = bch2_backpointer_get_key(trans, &iter, bucket, *bp_offset, bp,
+ BTREE_ITER_INTENT);
ret = bkey_err(k);
if (ret)
return ret;
break;
k = bch2_backpointer_get_key(trans, &iter,
- bucket, bp_offset, bp);
+ bucket, bp_offset, bp, 0);
ret = bkey_err(k);
if (bch2_err_matches(ret, BCH_ERR_transaction_restart))
continue;
unsigned i = 0;
k = bch2_backpointer_get_key(trans, &iter,
- bucket, bp_offset, bp);
+ bucket, bp_offset, bp, 0);
ret = bkey_err(k);
if (bch2_err_matches(ret, BCH_ERR_transaction_restart))
continue;