Lines Matching full:k
18 static inline unsigned bkey_type_to_indirect(const struct bkey *k) in bkey_type_to_indirect() argument
20 switch (k->type) { in bkey_type_to_indirect()
32 int bch2_reflink_p_invalid(struct bch_fs *c, struct bkey_s_c k, in bch2_reflink_p_invalid() argument
36 struct bkey_s_c_reflink_p p = bkey_s_c_to_reflink_p(k); in bch2_reflink_p_invalid()
48 struct bkey_s_c k) in bch2_reflink_p_to_text() argument
50 struct bkey_s_c_reflink_p p = bkey_s_c_to_reflink_p(k); in bch2_reflink_p_to_text()
69 if (le64_to_cpu(l.v->idx) + l.k->size != le64_to_cpu(r.v->idx)) in bch2_reflink_p_merge()
72 bch2_key_resize(l.k, l.k->size + r.k->size); in bch2_reflink_p_merge()
82 struct bkey_i *k; in trans_trigger_reflink_p_segment() local
88 k = bch2_bkey_get_mut_noupdate(trans, &iter, in trans_trigger_reflink_p_segment()
91 ret = PTR_ERR_OR_ZERO(k); in trans_trigger_reflink_p_segment()
95 refcount = bkey_refcount(bkey_i_to_s(k)); in trans_trigger_reflink_p_segment()
119 le64_to_cpu(v->idx) - bkey_start_offset(&k->k)); in trans_trigger_reflink_p_segment()
124 k->k.p.offset - p.k->size - le64_to_cpu(v->idx)); in trans_trigger_reflink_p_segment()
132 ret = bch2_trans_update(trans, &iter, k, 0); in trans_trigger_reflink_p_segment()
136 *idx = k->k.p.offset; in trans_trigger_reflink_p_segment()
151 u64 end = le64_to_cpu(p.v->idx) + p.k->size; in gc_trigger_reflink_p_segment()
187 update->k.p = p.k->p; in gc_trigger_reflink_p_segment()
188 update->k.p.offset = next_idx; in gc_trigger_reflink_p_segment()
189 update->k.size = next_idx - *idx; in gc_trigger_reflink_p_segment()
190 set_bkey_val_u64s(&update->k, 0); in gc_trigger_reflink_p_segment()
205 struct bkey_s_c k, unsigned flags) in __trigger_reflink_p() argument
208 struct bkey_s_c_reflink_p p = bkey_s_c_to_reflink_p(k); in __trigger_reflink_p()
212 u64 end = le64_to_cpu(p.v->idx) + p.k->size + le32_to_cpu(p.v->back_pad); in __trigger_reflink_p()
256 int bch2_reflink_v_invalid(struct bch_fs *c, struct bkey_s_c k, in bch2_reflink_v_invalid() argument
260 return bch2_bkey_ptrs_invalid(c, k, flags, err); in bch2_reflink_v_invalid()
264 struct bkey_s_c k) in bch2_reflink_v_to_text() argument
266 struct bkey_s_c_reflink_v r = bkey_s_c_to_reflink_v(k); in bch2_reflink_v_to_text()
270 bch2_bkey_ptrs_to_text(out, c, k); in bch2_reflink_v_to_text()
288 new.k->type = KEY_TYPE_deleted; in check_indirect_extent_deleting()
289 new.k->size = 0; in check_indirect_extent_deleting()
290 set_bkey_val_u64s(new.k, 0); in check_indirect_extent_deleting()
309 int bch2_indirect_inline_data_invalid(struct bch_fs *c, struct bkey_s_c k, in bch2_indirect_inline_data_invalid() argument
317 struct bch_fs *c, struct bkey_s_c k) in bch2_indirect_inline_data_to_text() argument
319 struct bkey_s_c_indirect_inline_data d = bkey_s_c_to_indirect_inline_data(k); in bch2_indirect_inline_data_to_text()
320 unsigned datalen = bkey_inline_data_bytes(k.k); in bch2_indirect_inline_data_to_text()
343 struct bkey_s_c k; in bch2_make_extent_indirect() local
349 if (orig->k.type == KEY_TYPE_inline_data) in bch2_make_extent_indirect()
354 k = bch2_btree_iter_peek_prev(&reflink_iter); in bch2_make_extent_indirect()
355 ret = bkey_err(k); in bch2_make_extent_indirect()
359 r_v = bch2_trans_kmalloc(trans, sizeof(__le64) + bkey_bytes(&orig->k)); in bch2_make_extent_indirect()
364 bkey_init(&r_v->k); in bch2_make_extent_indirect()
365 r_v->k.type = bkey_type_to_indirect(&orig->k); in bch2_make_extent_indirect()
366 r_v->k.p = reflink_iter.pos; in bch2_make_extent_indirect()
367 bch2_key_resize(&r_v->k, orig->k.size); in bch2_make_extent_indirect()
368 r_v->k.version = orig->k.version; in bch2_make_extent_indirect()
370 set_bkey_val_bytes(&r_v->k, sizeof(__le64) + bkey_val_bytes(&orig->k)); in bch2_make_extent_indirect()
374 memcpy(refcount + 1, &orig->v, bkey_val_bytes(&orig->k)); in bch2_make_extent_indirect()
384 orig->k.type = KEY_TYPE_reflink_p; in bch2_make_extent_indirect()
386 set_bkey_val_bytes(&r_p->k, sizeof(r_p->v)); in bch2_make_extent_indirect()
395 r_p->v.idx = cpu_to_le64(bkey_start_offset(&r_v->k)); in bch2_make_extent_indirect()
407 struct bkey_s_c k; in get_next_src() local
410 for_each_btree_key_upto_continue_norestart(*iter, end, 0, k, ret) { in get_next_src()
411 if (bkey_extent_is_unwritten(k)) in get_next_src()
414 if (bkey_extent_is_data(k.k)) in get_next_src()
415 return k; in get_next_src()
514 if (src_k.k->type != KEY_TYPE_reflink_p) { in bch2_remap_range()
518 src_k = bkey_i_to_s_c(new_src.k); in bch2_remap_range()
521 new_src.k); in bch2_remap_range()
525 BUG_ON(src_k.k->type != KEY_TYPE_reflink_p); in bch2_remap_range()
528 if (src_k.k->type == KEY_TYPE_reflink_p) { in bch2_remap_range()
532 bkey_reflink_p_init(new_dst.k); in bch2_remap_range()
536 bkey_start_offset(src_k.k)); in bch2_remap_range()
543 new_dst.k->k.p = dst_iter.pos; in bch2_remap_range()
544 bch2_key_resize(&new_dst.k->k, in bch2_remap_range()
545 min(src_k.k->p.offset - src_want.offset, in bch2_remap_range()
548 ret = bch2_bkey_set_needs_rebalance(c, new_dst.k, &opts) ?: in bch2_remap_range()
550 new_dst.k, &disk_res, in bch2_remap_range()