xref: /linux/fs/bcachefs/sb-counters_format.h (revision 2622f290417001b0440f4a48dc6978f5f1e12a56)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _BCACHEFS_SB_COUNTERS_FORMAT_H
3 #define _BCACHEFS_SB_COUNTERS_FORMAT_H
4 
5 enum counters_flags {
6 	TYPE_COUNTER	= BIT(0),	/* event counters */
7 	TYPE_SECTORS	= BIT(1),	/* amount counters, the unit is sectors */
8 };
9 
10 #define BCH_PERSISTENT_COUNTERS()					\
11 	x(io_read,					0,	TYPE_SECTORS)	\
12 	x(io_write,					1,	TYPE_SECTORS)	\
13 	x(io_move,					2,	TYPE_SECTORS)	\
14 	x(bucket_invalidate,				3,	TYPE_COUNTER)	\
15 	x(bucket_discard,				4,	TYPE_COUNTER)	\
16 	x(bucket_alloc,					5,	TYPE_COUNTER)	\
17 	x(bucket_alloc_fail,				6,	TYPE_COUNTER)	\
18 	x(btree_cache_scan,				7,	TYPE_COUNTER)	\
19 	x(btree_cache_reap,				8,	TYPE_COUNTER)	\
20 	x(btree_cache_cannibalize,			9,	TYPE_COUNTER)	\
21 	x(btree_cache_cannibalize_lock,			10,	TYPE_COUNTER)	\
22 	x(btree_cache_cannibalize_lock_fail,		11,	TYPE_COUNTER)	\
23 	x(btree_cache_cannibalize_unlock,		12,	TYPE_COUNTER)	\
24 	x(btree_node_write,				13,	TYPE_COUNTER)	\
25 	x(btree_node_read,				14,	TYPE_COUNTER)	\
26 	x(btree_node_compact,				15,	TYPE_COUNTER)	\
27 	x(btree_node_merge,				16,	TYPE_COUNTER)	\
28 	x(btree_node_split,				17,	TYPE_COUNTER)	\
29 	x(btree_node_rewrite,				18,	TYPE_COUNTER)	\
30 	x(btree_node_alloc,				19,	TYPE_COUNTER)	\
31 	x(btree_node_free,				20,	TYPE_COUNTER)	\
32 	x(btree_node_set_root,				21,	TYPE_COUNTER)	\
33 	x(btree_path_relock_fail,			22,	TYPE_COUNTER)	\
34 	x(btree_path_upgrade_fail,			23,	TYPE_COUNTER)	\
35 	x(btree_reserve_get_fail,			24,	TYPE_COUNTER)	\
36 	x(journal_entry_full,				25,	TYPE_COUNTER)	\
37 	x(journal_full,					26,	TYPE_COUNTER)	\
38 	x(journal_reclaim_finish,			27,	TYPE_COUNTER)	\
39 	x(journal_reclaim_start,			28,	TYPE_COUNTER)	\
40 	x(journal_write,				29,	TYPE_COUNTER)	\
41 	x(read_promote,					30,	TYPE_COUNTER)	\
42 	x(read_bounce,					31,	TYPE_COUNTER)	\
43 	x(read_split,					33,	TYPE_COUNTER)	\
44 	x(read_retry,					32,	TYPE_COUNTER)	\
45 	x(read_reuse_race,				34,	TYPE_COUNTER)	\
46 	x(move_extent_read,				35,	TYPE_SECTORS)	\
47 	x(move_extent_write,				36,	TYPE_SECTORS)	\
48 	x(move_extent_finish,				37,	TYPE_SECTORS)	\
49 	x(move_extent_fail,				38,	TYPE_COUNTER)	\
50 	x(move_extent_start_fail,			39,	TYPE_COUNTER)	\
51 	x(copygc,					40,	TYPE_COUNTER)	\
52 	x(copygc_wait,					41,	TYPE_COUNTER)	\
53 	x(gc_gens_end,					42,	TYPE_COUNTER)	\
54 	x(gc_gens_start,				43,	TYPE_COUNTER)	\
55 	x(trans_blocked_journal_reclaim,		44,	TYPE_COUNTER)	\
56 	x(trans_restart_btree_node_reused,		45,	TYPE_COUNTER)	\
57 	x(trans_restart_btree_node_split,		46,	TYPE_COUNTER)	\
58 	x(trans_restart_fault_inject,			47,	TYPE_COUNTER)	\
59 	x(trans_restart_iter_upgrade,			48,	TYPE_COUNTER)	\
60 	x(trans_restart_journal_preres_get,		49,	TYPE_COUNTER)	\
61 	x(trans_restart_journal_reclaim,		50,	TYPE_COUNTER)	\
62 	x(trans_restart_journal_res_get,		51,	TYPE_COUNTER)	\
63 	x(trans_restart_key_cache_key_realloced,	52,	TYPE_COUNTER)	\
64 	x(trans_restart_key_cache_raced,		53,	TYPE_COUNTER)	\
65 	x(trans_restart_mark_replicas,			54,	TYPE_COUNTER)	\
66 	x(trans_restart_mem_realloced,			55,	TYPE_COUNTER)	\
67 	x(trans_restart_memory_allocation_failure,	56,	TYPE_COUNTER)	\
68 	x(trans_restart_relock,				57,	TYPE_COUNTER)	\
69 	x(trans_restart_relock_after_fill,		58,	TYPE_COUNTER)	\
70 	x(trans_restart_relock_key_cache_fill,		59,	TYPE_COUNTER)	\
71 	x(trans_restart_relock_next_node,		60,	TYPE_COUNTER)	\
72 	x(trans_restart_relock_parent_for_fill,		61,	TYPE_COUNTER)	\
73 	x(trans_restart_relock_path,			62,	TYPE_COUNTER)	\
74 	x(trans_restart_relock_path_intent,		63,	TYPE_COUNTER)	\
75 	x(trans_restart_too_many_iters,			64,	TYPE_COUNTER)	\
76 	x(trans_restart_traverse,			65,	TYPE_COUNTER)	\
77 	x(trans_restart_upgrade,			66,	TYPE_COUNTER)	\
78 	x(trans_restart_would_deadlock,			67,	TYPE_COUNTER)	\
79 	x(trans_restart_would_deadlock_write,		68,	TYPE_COUNTER)	\
80 	x(trans_restart_injected,			69,	TYPE_COUNTER)	\
81 	x(trans_restart_key_cache_upgrade,		70,	TYPE_COUNTER)	\
82 	x(trans_traverse_all,				71,	TYPE_COUNTER)	\
83 	x(transaction_commit,				72,	TYPE_COUNTER)	\
84 	x(write_super,					73,	TYPE_COUNTER)	\
85 	x(trans_restart_would_deadlock_recursion_limit,	74,	TYPE_COUNTER)	\
86 	x(trans_restart_write_buffer_flush,		75,	TYPE_COUNTER)	\
87 	x(trans_restart_split_race,			76,	TYPE_COUNTER)	\
88 	x(write_buffer_flush_slowpath,			77,	TYPE_COUNTER)	\
89 	x(write_buffer_flush_sync,			78,	TYPE_COUNTER)
90 
91 enum bch_persistent_counters {
92 #define x(t, n, ...) BCH_COUNTER_##t,
93 	BCH_PERSISTENT_COUNTERS()
94 #undef x
95 	BCH_COUNTER_NR
96 };
97 
98 struct bch_sb_field_counters {
99 	struct bch_sb_field	field;
100 	__le64			d[];
101 };
102 
103 #endif /* _BCACHEFS_SB_COUNTERS_FORMAT_H */
104