Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _BCACHEFS_SB_COUNTERS_FORMAT_H
3#define _BCACHEFS_SB_COUNTERS_FORMAT_H
4
5enum 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_read_inline, 80, TYPE_SECTORS) \
13 x(io_read_hole, 81, TYPE_SECTORS) \
14 x(io_read_promote, 30, TYPE_COUNTER) \
15 x(io_read_bounce, 31, TYPE_COUNTER) \
16 x(io_read_split, 33, TYPE_COUNTER) \
17 x(io_read_reuse_race, 34, TYPE_COUNTER) \
18 x(io_read_retry, 32, TYPE_COUNTER) \
19 x(io_read_fail_and_poison, 82, TYPE_COUNTER) \
20 x(io_write, 1, TYPE_SECTORS) \
21 x(io_move, 2, TYPE_SECTORS) \
22 x(io_move_read, 35, TYPE_SECTORS) \
23 x(io_move_write, 36, TYPE_SECTORS) \
24 x(io_move_finish, 37, TYPE_SECTORS) \
25 x(io_move_fail, 38, TYPE_COUNTER) \
26 x(io_move_write_fail, 82, TYPE_COUNTER) \
27 x(io_move_start_fail, 39, TYPE_COUNTER) \
28 x(io_move_created_rebalance, 83, TYPE_COUNTER) \
29 x(io_move_evacuate_bucket, 84, TYPE_COUNTER) \
30 x(bucket_invalidate, 3, TYPE_COUNTER) \
31 x(bucket_discard, 4, TYPE_COUNTER) \
32 x(bucket_discard_fast, 79, TYPE_COUNTER) \
33 x(bucket_alloc, 5, TYPE_COUNTER) \
34 x(bucket_alloc_fail, 6, TYPE_COUNTER) \
35 x(btree_cache_scan, 7, TYPE_COUNTER) \
36 x(btree_cache_reap, 8, TYPE_COUNTER) \
37 x(btree_cache_cannibalize, 9, TYPE_COUNTER) \
38 x(btree_cache_cannibalize_lock, 10, TYPE_COUNTER) \
39 x(btree_cache_cannibalize_lock_fail, 11, TYPE_COUNTER) \
40 x(btree_cache_cannibalize_unlock, 12, TYPE_COUNTER) \
41 x(btree_node_write, 13, TYPE_COUNTER) \
42 x(btree_node_read, 14, TYPE_COUNTER) \
43 x(btree_node_compact, 15, TYPE_COUNTER) \
44 x(btree_node_merge, 16, TYPE_COUNTER) \
45 x(btree_node_split, 17, TYPE_COUNTER) \
46 x(btree_node_rewrite, 18, TYPE_COUNTER) \
47 x(btree_node_alloc, 19, TYPE_COUNTER) \
48 x(btree_node_free, 20, TYPE_COUNTER) \
49 x(btree_node_set_root, 21, TYPE_COUNTER) \
50 x(btree_path_relock_fail, 22, TYPE_COUNTER) \
51 x(btree_path_upgrade_fail, 23, TYPE_COUNTER) \
52 x(btree_reserve_get_fail, 24, TYPE_COUNTER) \
53 x(journal_entry_full, 25, TYPE_COUNTER) \
54 x(journal_full, 26, TYPE_COUNTER) \
55 x(journal_reclaim_finish, 27, TYPE_COUNTER) \
56 x(journal_reclaim_start, 28, TYPE_COUNTER) \
57 x(journal_write, 29, TYPE_COUNTER) \
58 x(copygc, 40, TYPE_COUNTER) \
59 x(copygc_wait, 41, TYPE_COUNTER) \
60 x(gc_gens_end, 42, TYPE_COUNTER) \
61 x(gc_gens_start, 43, TYPE_COUNTER) \
62 x(trans_blocked_journal_reclaim, 44, TYPE_COUNTER) \
63 x(trans_restart_btree_node_reused, 45, TYPE_COUNTER) \
64 x(trans_restart_btree_node_split, 46, TYPE_COUNTER) \
65 x(trans_restart_fault_inject, 47, TYPE_COUNTER) \
66 x(trans_restart_iter_upgrade, 48, TYPE_COUNTER) \
67 x(trans_restart_journal_preres_get, 49, TYPE_COUNTER) \
68 x(trans_restart_journal_reclaim, 50, TYPE_COUNTER) \
69 x(trans_restart_journal_res_get, 51, TYPE_COUNTER) \
70 x(trans_restart_key_cache_key_realloced, 52, TYPE_COUNTER) \
71 x(trans_restart_key_cache_raced, 53, TYPE_COUNTER) \
72 x(trans_restart_mark_replicas, 54, TYPE_COUNTER) \
73 x(trans_restart_mem_realloced, 55, TYPE_COUNTER) \
74 x(trans_restart_memory_allocation_failure, 56, TYPE_COUNTER) \
75 x(trans_restart_relock, 57, TYPE_COUNTER) \
76 x(trans_restart_relock_after_fill, 58, TYPE_COUNTER) \
77 x(trans_restart_relock_key_cache_fill, 59, TYPE_COUNTER) \
78 x(trans_restart_relock_next_node, 60, TYPE_COUNTER) \
79 x(trans_restart_relock_parent_for_fill, 61, TYPE_COUNTER) \
80 x(trans_restart_relock_path, 62, TYPE_COUNTER) \
81 x(trans_restart_relock_path_intent, 63, TYPE_COUNTER) \
82 x(trans_restart_too_many_iters, 64, TYPE_COUNTER) \
83 x(trans_restart_traverse, 65, TYPE_COUNTER) \
84 x(trans_restart_upgrade, 66, TYPE_COUNTER) \
85 x(trans_restart_would_deadlock, 67, TYPE_COUNTER) \
86 x(trans_restart_would_deadlock_write, 68, TYPE_COUNTER) \
87 x(trans_restart_injected, 69, TYPE_COUNTER) \
88 x(trans_restart_key_cache_upgrade, 70, TYPE_COUNTER) \
89 x(trans_traverse_all, 71, TYPE_COUNTER) \
90 x(transaction_commit, 72, TYPE_COUNTER) \
91 x(write_super, 73, TYPE_COUNTER) \
92 x(trans_restart_would_deadlock_recursion_limit, 74, TYPE_COUNTER) \
93 x(trans_restart_write_buffer_flush, 75, TYPE_COUNTER) \
94 x(trans_restart_split_race, 76, TYPE_COUNTER) \
95 x(write_buffer_flush_slowpath, 77, TYPE_COUNTER) \
96 x(write_buffer_flush_sync, 78, TYPE_COUNTER)
97
98enum bch_persistent_counters {
99#define x(t, n, ...) BCH_COUNTER_##t,
100 BCH_PERSISTENT_COUNTERS()
101#undef x
102 BCH_COUNTER_NR
103};
104
105enum bch_persistent_counters_stable {
106#define x(t, n, ...) BCH_COUNTER_STABLE_##t = n,
107 BCH_PERSISTENT_COUNTERS()
108#undef x
109 BCH_COUNTER_STABLE_NR
110};
111
112struct bch_sb_field_counters {
113 struct bch_sb_field field;
114 __le64 d[];
115};
116
117#endif /* _BCACHEFS_SB_COUNTERS_FORMAT_H */