]>
Commit | Line | Data |
---|---|---|
1da177e4 | 1 | /* |
7b718769 NS |
2 | * Copyright (c) 2000,2005 Silicon Graphics, Inc. |
3 | * All Rights Reserved. | |
1da177e4 | 4 | * |
7b718769 NS |
5 | * This program is free software; you can redistribute it and/or |
6 | * modify it under the terms of the GNU General Public License as | |
1da177e4 LT |
7 | * published by the Free Software Foundation. |
8 | * | |
7b718769 NS |
9 | * This program is distributed in the hope that it would be useful, |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | * GNU General Public License for more details. | |
1da177e4 | 13 | * |
7b718769 NS |
14 | * You should have received a copy of the GNU General Public License |
15 | * along with this program; if not, write the Free Software Foundation, | |
16 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
1da177e4 LT |
17 | */ |
18 | #ifndef __XFS_STATS_H__ | |
19 | #define __XFS_STATS_H__ | |
20 | ||
1da177e4 LT |
21 | |
22 | #include <linux/percpu.h> | |
23 | ||
24 | /* | |
25 | * XFS global statistics | |
26 | */ | |
27 | struct xfsstats { | |
28 | # define XFSSTAT_END_EXTENT_ALLOC 4 | |
29 | __uint32_t xs_allocx; | |
30 | __uint32_t xs_allocb; | |
31 | __uint32_t xs_freex; | |
32 | __uint32_t xs_freeb; | |
33 | # define XFSSTAT_END_ALLOC_BTREE (XFSSTAT_END_EXTENT_ALLOC+4) | |
34 | __uint32_t xs_abt_lookup; | |
35 | __uint32_t xs_abt_compare; | |
36 | __uint32_t xs_abt_insrec; | |
37 | __uint32_t xs_abt_delrec; | |
38 | # define XFSSTAT_END_BLOCK_MAPPING (XFSSTAT_END_ALLOC_BTREE+7) | |
39 | __uint32_t xs_blk_mapr; | |
40 | __uint32_t xs_blk_mapw; | |
41 | __uint32_t xs_blk_unmap; | |
42 | __uint32_t xs_add_exlist; | |
43 | __uint32_t xs_del_exlist; | |
44 | __uint32_t xs_look_exlist; | |
45 | __uint32_t xs_cmp_exlist; | |
46 | # define XFSSTAT_END_BLOCK_MAP_BTREE (XFSSTAT_END_BLOCK_MAPPING+4) | |
47 | __uint32_t xs_bmbt_lookup; | |
48 | __uint32_t xs_bmbt_compare; | |
49 | __uint32_t xs_bmbt_insrec; | |
50 | __uint32_t xs_bmbt_delrec; | |
51 | # define XFSSTAT_END_DIRECTORY_OPS (XFSSTAT_END_BLOCK_MAP_BTREE+4) | |
52 | __uint32_t xs_dir_lookup; | |
53 | __uint32_t xs_dir_create; | |
54 | __uint32_t xs_dir_remove; | |
55 | __uint32_t xs_dir_getdents; | |
56 | # define XFSSTAT_END_TRANSACTIONS (XFSSTAT_END_DIRECTORY_OPS+3) | |
57 | __uint32_t xs_trans_sync; | |
58 | __uint32_t xs_trans_async; | |
59 | __uint32_t xs_trans_empty; | |
60 | # define XFSSTAT_END_INODE_OPS (XFSSTAT_END_TRANSACTIONS+7) | |
61 | __uint32_t xs_ig_attempts; | |
62 | __uint32_t xs_ig_found; | |
63 | __uint32_t xs_ig_frecycle; | |
64 | __uint32_t xs_ig_missed; | |
65 | __uint32_t xs_ig_dup; | |
66 | __uint32_t xs_ig_reclaims; | |
67 | __uint32_t xs_ig_attrchg; | |
68 | # define XFSSTAT_END_LOG_OPS (XFSSTAT_END_INODE_OPS+5) | |
69 | __uint32_t xs_log_writes; | |
70 | __uint32_t xs_log_blocks; | |
71 | __uint32_t xs_log_noiclogs; | |
72 | __uint32_t xs_log_force; | |
73 | __uint32_t xs_log_force_sleep; | |
74 | # define XFSSTAT_END_TAIL_PUSHING (XFSSTAT_END_LOG_OPS+10) | |
75 | __uint32_t xs_try_logspace; | |
76 | __uint32_t xs_sleep_logspace; | |
77 | __uint32_t xs_push_ail; | |
78 | __uint32_t xs_push_ail_success; | |
79 | __uint32_t xs_push_ail_pushbuf; | |
80 | __uint32_t xs_push_ail_pinned; | |
81 | __uint32_t xs_push_ail_locked; | |
82 | __uint32_t xs_push_ail_flushing; | |
83 | __uint32_t xs_push_ail_restarts; | |
84 | __uint32_t xs_push_ail_flush; | |
85 | # define XFSSTAT_END_WRITE_CONVERT (XFSSTAT_END_TAIL_PUSHING+2) | |
86 | __uint32_t xs_xstrat_quick; | |
87 | __uint32_t xs_xstrat_split; | |
88 | # define XFSSTAT_END_READ_WRITE_OPS (XFSSTAT_END_WRITE_CONVERT+2) | |
89 | __uint32_t xs_write_calls; | |
90 | __uint32_t xs_read_calls; | |
91 | # define XFSSTAT_END_ATTRIBUTE_OPS (XFSSTAT_END_READ_WRITE_OPS+4) | |
92 | __uint32_t xs_attr_get; | |
93 | __uint32_t xs_attr_set; | |
94 | __uint32_t xs_attr_remove; | |
95 | __uint32_t xs_attr_list; | |
96 | # define XFSSTAT_END_INODE_CLUSTER (XFSSTAT_END_ATTRIBUTE_OPS+3) | |
97 | __uint32_t xs_iflush_count; | |
98 | __uint32_t xs_icluster_flushcnt; | |
99 | __uint32_t xs_icluster_flushinode; | |
100 | # define XFSSTAT_END_VNODE_OPS (XFSSTAT_END_INODE_CLUSTER+8) | |
101 | __uint32_t vn_active; /* # vnodes not on free lists */ | |
102 | __uint32_t vn_alloc; /* # times vn_alloc called */ | |
103 | __uint32_t vn_get; /* # times vn_get called */ | |
104 | __uint32_t vn_hold; /* # times vn_hold called */ | |
105 | __uint32_t vn_rele; /* # times vn_rele called */ | |
106 | __uint32_t vn_reclaim; /* # times vn_reclaim called */ | |
107 | __uint32_t vn_remove; /* # times vn_remove called */ | |
108 | __uint32_t vn_free; /* # times vn_free called */ | |
109 | #define XFSSTAT_END_BUF (XFSSTAT_END_VNODE_OPS+9) | |
ce8e922c NS |
110 | __uint32_t xb_get; |
111 | __uint32_t xb_create; | |
112 | __uint32_t xb_get_locked; | |
113 | __uint32_t xb_get_locked_waited; | |
114 | __uint32_t xb_busy_locked; | |
115 | __uint32_t xb_miss_locked; | |
116 | __uint32_t xb_page_retries; | |
117 | __uint32_t xb_page_found; | |
118 | __uint32_t xb_get_read; | |
854929f0 DC |
119 | /* Version 2 btree counters */ |
120 | #define XFSSTAT_END_ABTB_V2 (XFSSTAT_END_BUF+15) | |
121 | __uint32_t xs_abtb_2_lookup; | |
122 | __uint32_t xs_abtb_2_compare; | |
123 | __uint32_t xs_abtb_2_insrec; | |
124 | __uint32_t xs_abtb_2_delrec; | |
125 | __uint32_t xs_abtb_2_newroot; | |
126 | __uint32_t xs_abtb_2_killroot; | |
127 | __uint32_t xs_abtb_2_increment; | |
128 | __uint32_t xs_abtb_2_decrement; | |
129 | __uint32_t xs_abtb_2_lshift; | |
130 | __uint32_t xs_abtb_2_rshift; | |
131 | __uint32_t xs_abtb_2_split; | |
132 | __uint32_t xs_abtb_2_join; | |
133 | __uint32_t xs_abtb_2_alloc; | |
134 | __uint32_t xs_abtb_2_free; | |
135 | __uint32_t xs_abtb_2_moves; | |
136 | #define XFSSTAT_END_ABTC_V2 (XFSSTAT_END_ABTB_V2+15) | |
137 | __uint32_t xs_abtc_2_lookup; | |
138 | __uint32_t xs_abtc_2_compare; | |
139 | __uint32_t xs_abtc_2_insrec; | |
140 | __uint32_t xs_abtc_2_delrec; | |
141 | __uint32_t xs_abtc_2_newroot; | |
142 | __uint32_t xs_abtc_2_killroot; | |
143 | __uint32_t xs_abtc_2_increment; | |
144 | __uint32_t xs_abtc_2_decrement; | |
145 | __uint32_t xs_abtc_2_lshift; | |
146 | __uint32_t xs_abtc_2_rshift; | |
147 | __uint32_t xs_abtc_2_split; | |
148 | __uint32_t xs_abtc_2_join; | |
149 | __uint32_t xs_abtc_2_alloc; | |
150 | __uint32_t xs_abtc_2_free; | |
151 | __uint32_t xs_abtc_2_moves; | |
152 | #define XFSSTAT_END_BMBT_V2 (XFSSTAT_END_ABTC_V2+15) | |
153 | __uint32_t xs_bmbt_2_lookup; | |
154 | __uint32_t xs_bmbt_2_compare; | |
155 | __uint32_t xs_bmbt_2_insrec; | |
156 | __uint32_t xs_bmbt_2_delrec; | |
157 | __uint32_t xs_bmbt_2_newroot; | |
158 | __uint32_t xs_bmbt_2_killroot; | |
159 | __uint32_t xs_bmbt_2_increment; | |
160 | __uint32_t xs_bmbt_2_decrement; | |
161 | __uint32_t xs_bmbt_2_lshift; | |
162 | __uint32_t xs_bmbt_2_rshift; | |
163 | __uint32_t xs_bmbt_2_split; | |
164 | __uint32_t xs_bmbt_2_join; | |
165 | __uint32_t xs_bmbt_2_alloc; | |
166 | __uint32_t xs_bmbt_2_free; | |
167 | __uint32_t xs_bmbt_2_moves; | |
168 | #define XFSSTAT_END_IBT_V2 (XFSSTAT_END_BMBT_V2+15) | |
169 | __uint32_t xs_ibt_2_lookup; | |
170 | __uint32_t xs_ibt_2_compare; | |
171 | __uint32_t xs_ibt_2_insrec; | |
172 | __uint32_t xs_ibt_2_delrec; | |
173 | __uint32_t xs_ibt_2_newroot; | |
174 | __uint32_t xs_ibt_2_killroot; | |
175 | __uint32_t xs_ibt_2_increment; | |
176 | __uint32_t xs_ibt_2_decrement; | |
177 | __uint32_t xs_ibt_2_lshift; | |
178 | __uint32_t xs_ibt_2_rshift; | |
179 | __uint32_t xs_ibt_2_split; | |
180 | __uint32_t xs_ibt_2_join; | |
181 | __uint32_t xs_ibt_2_alloc; | |
182 | __uint32_t xs_ibt_2_free; | |
183 | __uint32_t xs_ibt_2_moves; | |
aafc3c24 BF |
184 | #define XFSSTAT_END_FIBT_V2 (XFSSTAT_END_IBT_V2+15) |
185 | __uint32_t xs_fibt_2_lookup; | |
186 | __uint32_t xs_fibt_2_compare; | |
187 | __uint32_t xs_fibt_2_insrec; | |
188 | __uint32_t xs_fibt_2_delrec; | |
189 | __uint32_t xs_fibt_2_newroot; | |
190 | __uint32_t xs_fibt_2_killroot; | |
191 | __uint32_t xs_fibt_2_increment; | |
192 | __uint32_t xs_fibt_2_decrement; | |
193 | __uint32_t xs_fibt_2_lshift; | |
194 | __uint32_t xs_fibt_2_rshift; | |
195 | __uint32_t xs_fibt_2_split; | |
196 | __uint32_t xs_fibt_2_join; | |
197 | __uint32_t xs_fibt_2_alloc; | |
198 | __uint32_t xs_fibt_2_free; | |
199 | __uint32_t xs_fibt_2_moves; | |
200 | #define XFSSTAT_END_XQMSTAT (XFSSTAT_END_FIBT_V2+6) | |
48776fd2 CH |
201 | __uint32_t xs_qm_dqreclaims; |
202 | __uint32_t xs_qm_dqreclaim_misses; | |
203 | __uint32_t xs_qm_dquot_dups; | |
204 | __uint32_t xs_qm_dqcachemisses; | |
205 | __uint32_t xs_qm_dqcachehits; | |
206 | __uint32_t xs_qm_dqwants; | |
207 | #define XFSSTAT_END_QM (XFSSTAT_END_XQMSTAT+2) | |
208 | __uint32_t xs_qm_dquot; | |
209 | __uint32_t xs_qm_dquot_unused; | |
1da177e4 LT |
210 | /* Extra precision counters */ |
211 | __uint64_t xs_xstrat_bytes; | |
212 | __uint64_t xs_write_bytes; | |
213 | __uint64_t xs_read_bytes; | |
214 | }; | |
215 | ||
80529c45 BD |
216 | int xfs_stats_format(struct xfsstats __percpu *stats, char *buf); |
217 | void xfs_stats_clearall(struct xfsstats __percpu *stats); | |
218 | extern struct xstats xfsstats; | |
1da177e4 | 219 | |
ff6d6af2 BD |
220 | #define XFS_STATS_INC(mp, v) \ |
221 | do { \ | |
222 | per_cpu_ptr(xfsstats.xs_stats, current_cpu())->v++; \ | |
223 | per_cpu_ptr(mp->m_stats.xs_stats, current_cpu())->v++; \ | |
224 | } while (0) | |
80529c45 | 225 | |
ff6d6af2 BD |
226 | #define XFS_STATS_DEC(mp, v) \ |
227 | do { \ | |
228 | per_cpu_ptr(xfsstats.xs_stats, current_cpu())->v--; \ | |
229 | per_cpu_ptr(mp->m_stats.xs_stats, current_cpu())->v--; \ | |
230 | } while (0) | |
80529c45 | 231 | |
ff6d6af2 BD |
232 | #define XFS_STATS_ADD(mp, v, inc) \ |
233 | do { \ | |
234 | per_cpu_ptr(xfsstats.xs_stats, current_cpu())->v += (inc); \ | |
235 | per_cpu_ptr(mp->m_stats.xs_stats, current_cpu())->v += (inc); \ | |
236 | } while (0) | |
237 | ||
238 | #if defined(CONFIG_PROC_FS) | |
1da177e4 | 239 | |
9f8868ff | 240 | extern int xfs_init_procfs(void); |
1da177e4 LT |
241 | extern void xfs_cleanup_procfs(void); |
242 | ||
243 | ||
244 | #else /* !CONFIG_PROC_FS */ | |
245 | ||
9f8868ff CH |
246 | static inline int xfs_init_procfs(void) |
247 | { | |
766b0925 CH |
248 | return 0; |
249 | } | |
250 | ||
9f8868ff CH |
251 | static inline void xfs_cleanup_procfs(void) |
252 | { | |
766b0925 | 253 | } |
1da177e4 LT |
254 | |
255 | #endif /* !CONFIG_PROC_FS */ | |
256 | ||
257 | #endif /* __XFS_STATS_H__ */ |