]> git.sesse.net Git - bcachefs-tools-debian/blob - libbcachefs/backpointers.h
New upstream release
[bcachefs-tools-debian] / libbcachefs / backpointers.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _BCACHEFS_BACKPOINTERS_BACKGROUND_H
3 #define _BCACHEFS_BACKPOINTERS_BACKGROUND_H
4
5 #include "super.h"
6
7 int bch2_backpointer_invalid(const struct bch_fs *, struct bkey_s_c k,
8                              int, struct printbuf *);
9 void bch2_backpointer_to_text(struct printbuf *, const struct bch_backpointer *);
10 void bch2_backpointer_k_to_text(struct printbuf *, struct bch_fs *, struct bkey_s_c);
11 void bch2_backpointer_swab(struct bkey_s);
12
13 #define bch2_bkey_ops_backpointer (struct bkey_ops) {   \
14         .key_invalid    = bch2_backpointer_invalid,     \
15         .val_to_text    = bch2_backpointer_k_to_text,   \
16         .swab           = bch2_backpointer_swab,        \
17 }
18
19 void bch2_extent_ptr_to_bp(struct bch_fs *, enum btree_id, unsigned,
20                            struct bkey_s_c, struct extent_ptr_decoded,
21                            struct bpos *, struct bch_backpointer *);
22
23 int bch2_bucket_backpointer_del(struct btree_trans *, struct bkey_i_alloc_v4 *,
24                                 struct bch_backpointer, struct bkey_s_c);
25 int bch2_bucket_backpointer_add(struct btree_trans *, struct bkey_i_alloc_v4 *,
26                                 struct bch_backpointer, struct bkey_s_c);
27 int bch2_get_next_backpointer(struct btree_trans *, struct bpos, int,
28                               u64 *, struct bch_backpointer *, unsigned);
29 struct bkey_s_c bch2_backpointer_get_key(struct btree_trans *, struct btree_iter *,
30                                          struct bpos, u64, struct bch_backpointer);
31 struct btree *bch2_backpointer_get_node(struct btree_trans *, struct btree_iter *,
32                                         struct bpos, u64, struct bch_backpointer);
33
34 int bch2_check_btree_backpointers(struct bch_fs *);
35 int bch2_check_extents_to_backpointers(struct bch_fs *);
36 int bch2_check_backpointers_to_extents(struct bch_fs *);
37
38 #endif /* _BCACHEFS_BACKPOINTERS_BACKGROUND_H */