Lines Matching refs:b
194 bool (*insert_fixup)(struct btree_keys *b,
234 static inline struct bset_tree *bset_tree_last(struct btree_keys *b) in bset_tree_last() argument
236 return b->set + b->nsets; in bset_tree_last()
239 static inline bool bset_written(struct btree_keys *b, struct bset_tree *t) in bset_written() argument
241 return t <= b->set + b->nsets - b->last_set_unwritten; in bset_written()
244 static inline bool bkey_written(struct btree_keys *b, struct bkey *k) in bkey_written() argument
246 return !b->last_set_unwritten || k < b->set[b->nsets].data->start; in bkey_written()
249 static inline unsigned int bset_byte_offset(struct btree_keys *b, in bset_byte_offset() argument
252 return ((size_t) i) - ((size_t) b->set->data); in bset_byte_offset()
255 static inline unsigned int bset_sector_offset(struct btree_keys *b, in bset_sector_offset() argument
258 return bset_byte_offset(b, i) >> 9; in bset_sector_offset()
269 static inline size_t bch_btree_keys_u64s_remaining(struct btree_keys *b) in bch_btree_keys_u64s_remaining() argument
271 struct bset_tree *t = bset_tree_last(b); in bch_btree_keys_u64s_remaining()
273 BUG_ON((PAGE_SIZE << b->page_order) < in bch_btree_keys_u64s_remaining()
274 (bset_byte_offset(b, t->data) + set_bytes(t->data))); in bch_btree_keys_u64s_remaining()
276 if (!b->last_set_unwritten) in bch_btree_keys_u64s_remaining()
279 return ((PAGE_SIZE << b->page_order) - in bch_btree_keys_u64s_remaining()
280 (bset_byte_offset(b, t->data) + set_bytes(t->data))) / in bch_btree_keys_u64s_remaining()
284 static inline struct bset *bset_next_set(struct btree_keys *b, in bset_next_set() argument
287 struct bset *i = bset_tree_last(b)->data; in bset_next_set()
292 void bch_btree_keys_free(struct btree_keys *b);
293 int bch_btree_keys_alloc(struct btree_keys *b, unsigned int page_order,
295 void bch_btree_keys_init(struct btree_keys *b, const struct btree_keys_ops *ops,
298 void bch_bset_init_next(struct btree_keys *b, struct bset *i, uint64_t magic);
299 void bch_bset_build_written_tree(struct btree_keys *b);
300 void bch_bset_fix_invalidated_key(struct btree_keys *b, struct bkey *k);
301 bool bch_bkey_try_merge(struct btree_keys *b, struct bkey *l, struct bkey *r);
302 void bch_bset_insert(struct btree_keys *b, struct bkey *where,
304 unsigned int bch_btree_insert_key(struct btree_keys *b, struct bkey *k,
320 struct btree_keys *b; member
327 typedef bool (*ptr_filter_fn)(struct btree_keys *b, const struct bkey *k);
331 struct btree_keys *b,
336 struct bkey *bch_btree_iter_init(struct btree_keys *b,
340 struct bkey *__bch_bset_search(struct btree_keys *b, struct bset_tree *t,
346 static inline struct bkey *bch_bset_search(struct btree_keys *b, in bch_bset_search() argument
350 return search ? __bch_bset_search(b, t, search) : t->data->start; in bch_bset_search()
353 #define for_each_key_filter(b, k, iter, filter) \ argument
354 for (bch_btree_iter_init((b), (iter), NULL); \
355 ((k) = bch_btree_iter_next_filter((iter), (b), filter));)
357 #define for_each_key(b, k, iter) \ argument
358 for (bch_btree_iter_init((b), (iter), NULL); \
375 void bch_btree_sort_lazy(struct btree_keys *b, struct bset_sort_state *state);
376 void bch_btree_sort_into(struct btree_keys *b, struct btree_keys *new,
378 void bch_btree_sort_and_fix_extents(struct btree_keys *b,
381 void bch_btree_sort_partial(struct btree_keys *b, unsigned int start,
384 static inline void bch_btree_sort(struct btree_keys *b, in bch_btree_sort() argument
387 bch_btree_sort_partial(b, 0, state); in bch_btree_sort()
396 void bch_btree_keys_stats(struct btree_keys *b, struct bset_stats *state);
459 static inline bool bch_ptr_invalid(struct btree_keys *b, const struct bkey *k) in bch_ptr_invalid() argument
461 return b->ops->key_invalid(b, k); in bch_ptr_invalid()
464 static inline bool bch_ptr_bad(struct btree_keys *b, const struct bkey *k) in bch_ptr_bad() argument
466 return b->ops->key_bad(b, k); in bch_ptr_bad()
469 static inline void bch_bkey_to_text(struct btree_keys *b, char *buf, in bch_bkey_to_text() argument
472 return b->ops->key_to_text(buf, size, k); in bch_bkey_to_text()
556 int __bch_count_data(struct btree_keys *b);
557 void __printf(2, 3) __bch_check_keys(struct btree_keys *b,
560 void bch_dump_bset(struct btree_keys *b, struct bset *i, unsigned int set);
561 void bch_dump_bucket(struct btree_keys *b);
565 static inline int __bch_count_data(struct btree_keys *b) { return -1; } in __bch_count_data() argument
567 __bch_check_keys(struct btree_keys *b, const char *fmt, ...) {} in __bch_check_keys() argument
568 static inline void bch_dump_bucket(struct btree_keys *b) {} in bch_dump_bucket() argument
569 void bch_dump_bset(struct btree_keys *b, struct bset *i, unsigned int set);
573 static inline bool btree_keys_expensive_checks(struct btree_keys *b) in btree_keys_expensive_checks() argument
576 return *b->expensive_debug_checks; in btree_keys_expensive_checks()
582 static inline int bch_count_data(struct btree_keys *b) in bch_count_data() argument
584 return btree_keys_expensive_checks(b) ? __bch_count_data(b) : -1; in bch_count_data()
587 #define bch_check_keys(b, ...) \ argument
589 if (btree_keys_expensive_checks(b)) \
590 __bch_check_keys(b, __VA_ARGS__); \