Lines Matching full:k
17 struct bkey_s_c k, in extent_matches_bp() argument
21 struct bkey_ptrs_c ptrs = bch2_bkey_ptrs_c(k); in extent_matches_bp()
25 bkey_for_each_ptr_decode(k.k, ptrs, p, entry) { in extent_matches_bp()
32 bch2_extent_ptr_to_bp(c, btree_id, level, k, p, in extent_matches_bp()
42 int bch2_backpointer_invalid(struct bch_fs *c, struct bkey_s_c k, in bch2_backpointer_invalid() argument
46 struct bkey_s_c_backpointer bp = bkey_s_c_to_backpointer(k); in bch2_backpointer_invalid()
47 struct bpos bucket = bp_pos_to_bucket(c, bp.k->p); in bch2_backpointer_invalid()
50 bkey_fsck_err_on(!bpos_eq(bp.k->p, bucket_pos_to_bp(c, bucket, bp.v->bucket_offset)), in bch2_backpointer_invalid()
69 void bch2_backpointer_k_to_text(struct printbuf *out, struct bch_fs *c, struct bkey_s_c k) in bch2_backpointer_k_to_text() argument
71 if (bch2_dev_exists2(c, k.k->p.inode)) { in bch2_backpointer_k_to_text()
73 bch2_bpos_to_text(out, bp_pos_to_bucket(c, k.k->p)); in bch2_backpointer_k_to_text()
77 bch2_backpointer_to_text(out, bkey_s_c_to_backpointer(k).v); in bch2_backpointer_k_to_text()
80 void bch2_backpointer_swab(struct bkey_s k) in bch2_backpointer_swab() argument
82 struct bkey_s_backpointer bp = bkey_s_to_backpointer(k); in bch2_backpointer_swab()
148 struct bkey_s_c k; in bch2_bucket_backpointer_mod_nowritebuffer() local
158 bp_k->k.p = bucket_pos_to_bp(trans->c, bucket, bp.bucket_offset); in bch2_bucket_backpointer_mod_nowritebuffer()
162 bp_k->k.type = KEY_TYPE_deleted; in bch2_bucket_backpointer_mod_nowritebuffer()
163 set_bkey_val_u64s(&bp_k->k, 0); in bch2_bucket_backpointer_mod_nowritebuffer()
166 k = bch2_bkey_get_iter(trans, &bp_iter, BTREE_ID_backpointers, in bch2_bucket_backpointer_mod_nowritebuffer()
167 bp_k->k.p, in bch2_bucket_backpointer_mod_nowritebuffer()
171 ret = bkey_err(k); in bch2_bucket_backpointer_mod_nowritebuffer()
176 ? k.k->type in bch2_bucket_backpointer_mod_nowritebuffer()
177 : (k.k->type != KEY_TYPE_backpointer || in bch2_bucket_backpointer_mod_nowritebuffer()
178 memcmp(bkey_s_c_to_backpointer(k).v, &bp, sizeof(bp)))) { in bch2_bucket_backpointer_mod_nowritebuffer()
179 ret = backpointer_mod_err(trans, bp, k, orig_k, insert); in bch2_bucket_backpointer_mod_nowritebuffer()
202 struct bkey_s_c k; in bch2_get_next_backpointer() local
209 k = bch2_bkey_get_iter(trans, &alloc_iter, BTREE_ID_alloc, in bch2_get_next_backpointer()
211 ret = bkey_err(k); in bch2_get_next_backpointer()
215 if (k.k->type != KEY_TYPE_alloc_v4 || in bch2_get_next_backpointer()
216 bkey_s_c_to_alloc_v4(k).v->gen != gen) in bch2_get_next_backpointer()
223 *bp_pos, iter_flags, k, ret) { in bch2_get_next_backpointer()
224 if (bpos_ge(k.k->p, bp_end_pos)) in bch2_get_next_backpointer()
227 *bp_pos = k.k->p; in bch2_get_next_backpointer()
228 *bp = *bkey_s_c_to_backpointer(k).v; in bch2_get_next_backpointer()
242 struct bkey_s_c k) in backpointer_not_found() argument
268 bch2_bkey_val_to_text(&buf, c, k); in backpointer_not_found()
286 struct bkey_s_c k; in bch2_backpointer_get_key() local
293 k = bch2_btree_iter_peek_slot(iter); in bch2_backpointer_get_key()
294 if (bkey_err(k)) { in bch2_backpointer_get_key()
296 return k; in bch2_backpointer_get_key()
299 if (k.k && extent_matches_bp(c, bp.btree_id, bp.level, k, bucket, bp)) in bch2_backpointer_get_key()
300 return k; in bch2_backpointer_get_key()
303 backpointer_not_found(trans, bp_pos, bp, k); in bch2_backpointer_get_key()
356 struct bkey_s_c k) in bch2_check_btree_backpointer() argument
364 if (fsck_err_on(!bch2_dev_exists2(c, k.k->p.inode), c, in bch2_check_btree_backpointer()
367 (bch2_bkey_val_to_text(&buf, c, k), buf.buf))) { in bch2_check_btree_backpointer()
373 bp_pos_to_bucket(c, k.k->p), 0); in bch2_check_btree_backpointer()
378 if (fsck_err_on(alloc_k.k->type != KEY_TYPE_alloc_v4, c, in bch2_check_btree_backpointer()
398 BTREE_ID_backpointers, POS_MIN, 0, k, in bch2_check_btree_backpointers()
400 bch2_check_btree_backpointer(trans, &iter, k))); in bch2_check_btree_backpointers()
407 return bpos_eq(l.k->p, r.k->p) && in bkey_and_val_eq()
408 bkey_bytes(l.k) == bkey_bytes(r.k) && in bkey_and_val_eq()
409 !memcmp(l.v, r.v, bkey_val_bytes(l.k)); in bkey_and_val_eq()
447 if (bp_k.k->type != KEY_TYPE_backpointer || in check_bp_exists()
451 if (!bkey_and_val_eq(orig_k, bkey_i_to_s_c(s->last_flushed.k))) { in check_bp_exists()
461 bch2_bkey_buf_copy(&s->last_flushed, c, tmp.k); in check_bp_exists()
491 struct bkey_s_c k) in check_extent_to_backpointers() argument
499 ptrs = bch2_bkey_ptrs_c(k); in check_extent_to_backpointers()
500 bkey_for_each_ptr_decode(k.k, ptrs, p, entry) { in check_extent_to_backpointers()
508 k, p, &bucket_pos, &bp); in check_extent_to_backpointers()
510 ret = check_bp_exists(trans, s, bucket_pos, bp, k); in check_extent_to_backpointers()
526 struct bkey_s_c k; in check_btree_root_to_backpointers() local
543 k = bkey_i_to_s_c(&b->key); in check_btree_root_to_backpointers()
544 ret = check_extent_to_backpointers(trans, s, btree_id, b->c.level + 1, k); in check_btree_root_to_backpointers()
574 struct bkey_s_c k; in bch2_get_btree_in_memory_pos() local
596 k = __bch2_btree_iter_peek_and_restart(trans, &iter, 0); in bch2_get_btree_in_memory_pos()
597 ret = bkey_err(k); in bch2_get_btree_in_memory_pos()
598 if (!k.k || ret) in bch2_get_btree_in_memory_pos()
603 *end = BBPOS(btree, k.k->p); in bch2_get_btree_in_memory_pos()
640 struct bkey_s_c k = bch2_btree_iter_peek(&iter); in bch2_check_extents_to_backpointers_pass() local
641 if (!k.k) in bch2_check_extents_to_backpointers_pass()
643 ret = bkey_err(k) ?: in bch2_check_extents_to_backpointers_pass()
644 check_extent_to_backpointers(trans, s, btree_id, level, k) ?: in bch2_check_extents_to_backpointers_pass()
700 if ((!alloc_k.k && !bp_k.k) || ret) { in bch2_get_alloc_in_memory_pos()
707 *end = alloc_k.k ? alloc_k.k->p : SPOS_MAX; in bch2_get_alloc_in_memory_pos()
732 bkey_init(&s.last_flushed.k->k); in bch2_check_extents_to_backpointers()
779 struct bkey_s_c k; in check_one_backpointer() local
787 k = bch2_backpointer_get_key(trans, &iter, bp.k->p, *bp.v, 0); in check_one_backpointer()
788 ret = bkey_err(k); in check_one_backpointer()
794 if (!k.k && !bpos_eq(*last_flushed_pos, bp.k->p)) { in check_one_backpointer()
795 *last_flushed_pos = bp.k->p; in check_one_backpointer()
801 if (fsck_err_on(!k.k, c, in check_one_backpointer()
806 ret = bch2_btree_delete_at_buffered(trans, BTREE_ID_backpointers, bp.k->p); in check_one_backpointer()
823 POS_MIN, BTREE_ITER_PREFETCH, k, in bch2_check_backpointers_to_extents_pass()
826 bkey_s_c_to_backpointer(k), in bch2_check_backpointers_to_extents_pass()