Lines Matching refs:format
52 const struct bkey_format *format) in __bch2_bkey_pack_verify() argument
56 BUG_ON(bkeyp_val_u64s(format, packed) != in __bch2_bkey_pack_verify()
59 BUG_ON(packed->u64s < bkeyp_key_u64s(format, packed)); in __bch2_bkey_pack_verify()
61 tmp = __bch2_bkey_unpack_key(format, packed); in __bch2_bkey_pack_verify()
67 format->key_u64s, in __bch2_bkey_pack_verify()
68 format->bits_per_field[0], in __bch2_bkey_pack_verify()
69 format->bits_per_field[1], in __bch2_bkey_pack_verify()
70 format->bits_per_field[2], in __bch2_bkey_pack_verify()
71 format->bits_per_field[3], in __bch2_bkey_pack_verify()
72 format->bits_per_field[4]); in __bch2_bkey_pack_verify()
98 const struct bkey_format *format) in bch2_bkey_pack_verify() argument
101 __bch2_bkey_pack_verify(packed, unpacked, format); in bch2_bkey_pack_verify()
105 const struct bkey_format *format; member
112 static struct pack_state pack_state_init(const struct bkey_format *format, in pack_state_init() argument
115 u64 *p = high_word(format, k); in pack_state_init()
118 .format = format, in pack_state_init()
130 EBUG_ON(state->p >= (u64 *) k->_data + state->format->key_u64s); in pack_state_finish()
136 const struct bkey_format *format; member
143 static struct unpack_state unpack_state_init(const struct bkey_format *format, in unpack_state_init() argument
146 const u64 *p = high_word(format, k); in unpack_state_init()
149 .format = format, in unpack_state_init()
159 unsigned bits = state->format->bits_per_field[field]; in get_inc_field()
160 u64 v = 0, offset = le64_to_cpu(state->format->field_offset[field]); in get_inc_field()
182 unsigned bits = state->format->bits_per_field[field]; in __set_inc_field()
204 unsigned bits = state->format->bits_per_field[field]; in set_inc_field()
205 u64 offset = le64_to_cpu(state->format->field_offset[field]); in set_inc_field()
266 struct bkey __bch2_bkey_unpack_key(const struct bkey_format *format, in __bch2_bkey_unpack_key() argument
269 struct unpack_state state = unpack_state_init(format, in); in __bch2_bkey_unpack_key()
272 EBUG_ON(format->nr_fields != BKEY_NR_FIELDS); in __bch2_bkey_unpack_key()
273 EBUG_ON(in->u64s < format->key_u64s); in __bch2_bkey_unpack_key()
274 EBUG_ON(in->format != KEY_FORMAT_LOCAL_BTREE); in __bch2_bkey_unpack_key()
275 EBUG_ON(in->u64s - format->key_u64s + BKEY_U64s > U8_MAX); in __bch2_bkey_unpack_key()
277 out.u64s = BKEY_U64s + in->u64s - format->key_u64s; in __bch2_bkey_unpack_key()
278 out.format = KEY_FORMAT_CURRENT; in __bch2_bkey_unpack_key()
291 struct bpos __bkey_unpack_pos(const struct bkey_format *format, in __bkey_unpack_pos() argument
294 struct unpack_state state = unpack_state_init(format, in); in __bkey_unpack_pos()
297 EBUG_ON(format->nr_fields != BKEY_NR_FIELDS); in __bkey_unpack_pos()
298 EBUG_ON(in->u64s < format->key_u64s); in __bkey_unpack_pos()
299 EBUG_ON(in->format != KEY_FORMAT_LOCAL_BTREE); in __bkey_unpack_pos()
318 const struct bkey_format *format) in bch2_bkey_pack_key() argument
320 struct pack_state state = pack_state_init(format, out); in bch2_bkey_pack_key()
324 EBUG_ON(format->nr_fields != BKEY_NR_FIELDS); in bch2_bkey_pack_key()
325 EBUG_ON(in->format != KEY_FORMAT_CURRENT); in bch2_bkey_pack_key()
333 out->u64s = format->key_u64s + in->u64s - BKEY_U64s; in bch2_bkey_pack_key()
334 out->format = KEY_FORMAT_LOCAL_BTREE; in bch2_bkey_pack_key()
338 bch2_bkey_pack_verify(out, in, format); in bch2_bkey_pack_key()
354 bkeyp_val(&b->format, src), in bch2_bkey_unpack()
355 bkeyp_val_u64s(&b->format, src)); in bch2_bkey_unpack()
367 const struct bkey_format *format) in bch2_bkey_pack() argument
371 if (!bch2_bkey_pack_key(&tmp, &src->k, format)) in bch2_bkey_pack()
374 memmove_u64s((u64 *) dst + format->key_u64s, in bch2_bkey_pack()
377 memcpy_u64s_small(dst, &tmp, format->key_u64s); in bch2_bkey_pack()
385 unsigned bits = state->format->bits_per_field[field]; in set_inc_field_lossy()
386 u64 offset = le64_to_cpu(state->format->field_offset[field]); in set_inc_field_lossy()
405 const struct bkey_format *f = &b->format; in bkey_packed_successor()
470 const struct bkey_format *f = &b->format; in bch2_bkey_pack_pos_lossy()
523 out->format = KEY_FORMAT_LOCAL_BTREE; in bch2_bkey_pack_pos_lossy()
701 const u64 *l = high_word(&b->format, l_k); in bch2_bkey_greatest_differing_bit()
702 const u64 *r = high_word(&b->format, r_k); in bch2_bkey_greatest_differing_bit()
707 EBUG_ON(b->nr_key_bits != bkey_format_key_bits(&b->format)); in bch2_bkey_greatest_differing_bit()
743 const u64 *p = high_word(&b->format, k); in bch2_bkey_ffs()
747 EBUG_ON(b->nr_key_bits != bkey_format_key_bits(&b->format)); in bch2_bkey_ffs()
785 static u8 *compile_bkey_field(const struct bkey_format *format, u8 *out, in compile_bkey_field() argument
790 unsigned bits = format->bits_per_field[field]; in compile_bkey_field()
791 u64 offset = le64_to_cpu(format->field_offset[field]); in compile_bkey_field()
839 bit_offset = format->key_u64s * 64; in compile_bkey_field()
841 bit_offset -= format->bits_per_field[i]; in compile_bkey_field()
969 int bch2_compile_bkey_format(const struct bkey_format *format, void *_out) in bch2_compile_bkey_format() argument
985 I5(0x05, BKEY_U64s - format->key_u64s, KEY_FORMAT_CURRENT, 0, 0); in bch2_compile_bkey_format()
994 out = compile_bkey_field(format, out, id, \ in bch2_compile_bkey_format()
1092 for (i = 0; i < out_s.format->nr_fields; i++) { in bch2_bkey_pack_test()