Lines Matching refs:bp

21 static inline struct bbpos bp_to_bbpos(struct bch_backpointer bp)  in bp_to_bbpos()  argument
24 .btree = bp.btree_id, in bp_to_bbpos()
25 .pos = bp.pos, in bp_to_bbpos()
32 struct bkey_s_c_backpointer bp = bkey_s_c_to_backpointer(k); in bch2_backpointer_validate() local
35 bkey_fsck_err_on(bp.v->level > BTREE_MAX_DEPTH, in bch2_backpointer_validate()
38 bp.v->level, BTREE_MAX_DEPTH); in bch2_backpointer_validate()
40 bkey_fsck_err_on(bp.k->p.inode == BCH_SB_MEMBER_INVALID, in bch2_backpointer_validate()
49 struct bkey_s_c_backpointer bp = bkey_s_c_to_backpointer(k); in bch2_backpointer_to_text() local
55 ca = bch2_dev_rcu_noerror(c, bp.k->p.inode); in bch2_backpointer_to_text()
57 bucket = bp_pos_to_bucket_and_offset(ca, bp.k->p, &bucket_offset); in bch2_backpointer_to_text()
63 …prt_printf(out, "sector=%llu:%llu ", bp.k->p.inode, bp.k->p.offset >> MAX_EXTENT_COMPRESS_RATIO_SH… in bch2_backpointer_to_text()
65 bch2_btree_id_level_to_text(out, bp.v->btree_id, bp.v->level); in bch2_backpointer_to_text()
67 bch2_prt_data_type(out, bp.v->data_type); in bch2_backpointer_to_text()
69 (u32) bp.k->p.offset & ~(~0U << MAX_EXTENT_COMPRESS_RATIO_SHIFT), in bch2_backpointer_to_text()
70 bp.v->bucket_len, in bch2_backpointer_to_text()
71 bp.v->bucket_gen); in bch2_backpointer_to_text()
72 bch2_bpos_to_text(out, bp.v->pos); in bch2_backpointer_to_text()
77 struct bkey_s_backpointer bp = bkey_s_to_backpointer(k); in bch2_backpointer_swab() local
79 bp.v->bucket_len = swab32(bp.v->bucket_len); in bch2_backpointer_swab()
80 bch2_bpos_swab(&bp.v->pos); in bch2_backpointer_swab()
86 struct bkey_s_c_backpointer bp) in extent_matches_bp() argument
96 if (bpos_eq(bp.k->p, bp2.k.p) && in extent_matches_bp()
97 !memcmp(bp.v, &bp2.v, sizeof(bp2.v))) in extent_matches_bp()
154 struct bkey_i_backpointer *bp, in bch2_bucket_backpointer_mod_nowritebuffer() argument
159 bp->k.p, in bch2_bucket_backpointer_mod_nowritebuffer()
170 memcmp(bkey_s_c_to_backpointer(k).v, &bp->v, sizeof(bp->v)))) { in bch2_bucket_backpointer_mod_nowritebuffer()
171 ret = backpointer_mod_err(trans, orig_k, bp, k, insert); in bch2_bucket_backpointer_mod_nowritebuffer()
177 bp->k.type = KEY_TYPE_deleted; in bch2_bucket_backpointer_mod_nowritebuffer()
178 set_bkey_val_u64s(&bp->k, 0); in bch2_bucket_backpointer_mod_nowritebuffer()
181 ret = bch2_trans_update(trans, &bp_iter, &bp->k_i, 0); in bch2_bucket_backpointer_mod_nowritebuffer()
205 struct bkey_s_c_backpointer bp, in backpointer_target_not_found() argument
220 ? bch2_backpointers_maybe_flush(trans, bp.s_c, last_flushed) in backpointer_target_not_found()
226 bp.v->level ? "btree node" : "extent"); in backpointer_target_not_found()
227 bch2_bkey_val_to_text(&buf, c, bp.s_c); in backpointer_target_not_found()
236 if (p.ptr.dev == bp.k->p.inode) { in backpointer_target_not_found()
239 bch2_extent_ptr_to_bp(c, bp.v->btree_id, bp.v->level, target_k, p, entry, &bp2); in backpointer_target_not_found()
245 ret = bch2_backpointer_del(trans, bp.k->p); in backpointer_target_not_found()
272 struct bkey_s_c_backpointer bp, in __bch2_backpointer_get_node() argument
279 BUG_ON(!bp.v->level); in __bch2_backpointer_get_node()
282 bp.v->btree_id, in __bch2_backpointer_get_node()
283 bp.v->pos, in __bch2_backpointer_get_node()
285 bp.v->level - 1, in __bch2_backpointer_get_node()
291 BUG_ON(b->c.level != bp.v->level - 1); in __bch2_backpointer_get_node()
293 if (extent_matches_bp(c, bp.v->btree_id, bp.v->level, in __bch2_backpointer_get_node()
294 bkey_i_to_s_c(&b->key), bp)) in __bch2_backpointer_get_node()
300 int ret = backpointer_target_not_found(trans, bp, bkey_i_to_s_c(&b->key), in __bch2_backpointer_get_node()
310 struct bkey_s_c_backpointer bp, in __bch2_backpointer_get_key() argument
318 if (unlikely(bp.v->btree_id >= btree_id_nr_alive(c))) in __bch2_backpointer_get_key()
322 bp.v->btree_id, in __bch2_backpointer_get_key()
323 bp.v->pos, in __bch2_backpointer_get_key()
325 bp.v->level, in __bch2_backpointer_get_key()
341 iter->k.p = bp.v->pos; in __bch2_backpointer_get_key()
346 extent_matches_bp(c, bp.v->btree_id, bp.v->level, k, bp)) in __bch2_backpointer_get_key()
351 if (!bp.v->level) { in __bch2_backpointer_get_key()
352 int ret = backpointer_target_not_found(trans, bp, k, last_flushed, commit); in __bch2_backpointer_get_key()
355 struct btree *b = __bch2_backpointer_get_node(trans, bp, iter, last_flushed, commit); in __bch2_backpointer_get_key()
366 struct bkey_s_c_backpointer bp, in bch2_backpointer_get_node() argument
370 return __bch2_backpointer_get_node(trans, bp, iter, last_flushed, true); in bch2_backpointer_get_node()
374 struct bkey_s_c_backpointer bp, in bch2_backpointer_get_key() argument
379 return __bch2_backpointer_get_key(trans, bp, iter, iter_flags, last_flushed, true); in bch2_backpointer_get_key()
539 struct bkey_i_backpointer *bp, in check_bp_exists() argument
546 if (bpos_lt(bp->k.p, s->bp_start) || in check_bp_exists()
547 bpos_gt(bp->k.p, s->bp_end)) in check_bp_exists()
551 struct bkey_s_c bp_k = bch2_bkey_get_iter(trans, &bp_iter, BTREE_ID_backpointers, bp->k.p, 0); in check_bp_exists()
557 memcmp(bkey_s_c_to_backpointer(bp_k).v, &bp->v, sizeof(bp->v))) { in check_bp_exists()
590 struct bch_dev *ca = bch2_dev_rcu_noerror(c, bp->k.p.inode); in check_bp_exists()
594 if (ptr->dev == bp->k.p.inode && in check_bp_exists()
598 other_extent, bp->k.p.inode); in check_bp_exists()
616 other_extent, bp->k.p.inode); in check_bp_exists()
621 ret = drop_dev_and_update(trans, bp->v.btree_id, orig_k, bp->k.p.inode); in check_bp_exists()
630 bp->v.btree_id, orig_k, in check_bp_exists()
631 bp->k.p.inode); in check_bp_exists()
639 ret = check_extent_checksum(trans, bp->v.btree_id, orig_k, in check_bp_exists()
640 other_bp.v->btree_id, other_extent, bp->k.p.inode); in check_bp_exists()
649 prt_printf(&buf, "duplicate extents pointing to same space on dev %llu\n", bp->k.p.inode); in check_bp_exists()
661 bch2_bkey_val_to_text(&buf, c, bkey_i_to_s_c(&bp->k_i)); in check_bp_exists()
666 ret = bch2_bucket_backpointer_mod(trans, orig_k, bp, true); in check_bp_exists()
703 struct bkey_i_backpointer bp; in check_extent_to_backpointers() local
704 bch2_extent_ptr_to_bp(c, btree, level, k, p, entry, &bp); in check_extent_to_backpointers()
707 ? check_bp_exists(trans, s, &bp, k) in check_extent_to_backpointers()
708 : bch2_bucket_backpointer_mod(trans, k, &bp, true); in check_extent_to_backpointers()
911 struct bkey_s_c_backpointer bp = bkey_s_c_to_backpointer(bp_k); in check_bucket_backpointer_mismatch() local
914 (bp.v->bucket_gen != a->gen || in check_bucket_backpointer_mismatch()
915 bp.v->pad)) { in check_bucket_backpointer_mismatch()
924 if (bp.v->bucket_gen != a->gen) in check_bucket_backpointer_mismatch()
927 int alloc_counter = data_type_to_alloc_counter(bp.v->data_type); in check_bucket_backpointer_mismatch()
931 sectors[alloc_counter] += bp.v->bucket_len; in check_bucket_backpointer_mismatch()
1240 struct bkey_s_c_backpointer bp = bkey_s_c_to_backpointer(bp_k); in check_one_backpointer() local
1241 struct bbpos pos = bp_to_bbpos(*bp.v); in check_one_backpointer()
1248 struct bkey_s_c k = bch2_backpointer_get_key(trans, bp, &iter, 0, last_flushed); in check_one_backpointer()