| /* SPDX-License-Identifier: GPL-2.0 */ |
| #ifndef _BCACHEFS_DEBUG_H |
| #define _BCACHEFS_DEBUG_H |
| |
| #include "bcachefs.h" |
| |
| struct bio; |
| struct btree; |
| struct bch_fs; |
| |
| void __bch2_btree_verify(struct bch_fs *, struct btree *); |
| void bch2_btree_node_ondisk_to_text(struct printbuf *, struct bch_fs *, |
| const struct btree *); |
| |
| static inline void bch2_btree_verify(struct bch_fs *c, struct btree *b) |
| { |
| if (static_branch_unlikely(&bch2_verify_btree_ondisk)) |
| __bch2_btree_verify(c, b); |
| } |
| |
| #ifdef CONFIG_DEBUG_FS |
| struct dump_iter { |
| struct bch_fs *c; |
| struct async_obj_list *list; |
| enum btree_id id; |
| struct bpos from; |
| struct bpos prev_node; |
| u64 iter; |
| |
| struct printbuf buf; |
| |
| char __user *ubuf; /* destination user buffer */ |
| size_t size; /* size of requested read */ |
| ssize_t ret; /* bytes read so far */ |
| }; |
| |
| ssize_t bch2_debugfs_flush_buf(struct dump_iter *); |
| int bch2_dump_release(struct inode *, struct file *); |
| |
| void bch2_fs_debug_exit(struct bch_fs *); |
| void bch2_fs_debug_init(struct bch_fs *); |
| #else |
| static inline void bch2_fs_debug_exit(struct bch_fs *c) {} |
| static inline void bch2_fs_debug_init(struct bch_fs *c) {} |
| #endif |
| |
| void bch2_debug_exit(void); |
| int bch2_debug_init(void); |
| |
| #endif /* _BCACHEFS_DEBUG_H */ |