1/* 2 * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. 3 * 4 * This program is free software; you can redistribute it and/or modify it 5 * under the terms of version 2 of the GNU General Public License as 6 * published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it would be useful, but 9 * WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 * 12 * Further, this software is distributed without any warranty that it is 13 * free of the rightful claim of any third person regarding infringement 14 * or the like. Any license provided herein, whether implied or 15 * otherwise, applies only to this software file. Patent licenses, if 16 * any, provided herein do not apply to combinations of this program with 17 * other software, or any other product whatsoever. 18 * 19 * You should have received a copy of the GNU General Public License along 20 * with this program; if not, write the Free Software Foundation, Inc., 59 21 * Temple Place - Suite 330, Boston MA 02111-1307, USA. 22 * 23 * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, 24 * Mountain View, CA 94043, or: 25 * 26 * http://www.sgi.com 27 * 28 * For further information regarding this notice, see: 29 * 30 * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/ 31 */ 32#ifndef __XFS_STATS_H__ 33#define __XFS_STATS_H__ 34 35 36#if !defined(XFS_STATS_OFF) 37 38/* 39 * XFS global statistics 40 */ 41struct xfsstats { 42# define XFSSTAT_END_EXTENT_ALLOC 4 43 __uint32_t xs_allocx; 44 __uint32_t xs_allocb; 45 __uint32_t xs_freex; 46 __uint32_t xs_freeb; 47# define XFSSTAT_END_ALLOC_BTREE (XFSSTAT_END_EXTENT_ALLOC+4) 48 __uint32_t xs_abt_lookup; 49 __uint32_t xs_abt_compare; 50 __uint32_t xs_abt_insrec; 51 __uint32_t xs_abt_delrec; 52# define XFSSTAT_END_BLOCK_MAPPING (XFSSTAT_END_ALLOC_BTREE+7) 53 __uint32_t xs_blk_mapr; 54 __uint32_t xs_blk_mapw; 55 __uint32_t xs_blk_unmap; 56 __uint32_t xs_add_exlist; 57 __uint32_t xs_del_exlist; 58 __uint32_t xs_look_exlist; 59 __uint32_t xs_cmp_exlist; 60# define XFSSTAT_END_BLOCK_MAP_BTREE (XFSSTAT_END_BLOCK_MAPPING+4) 61 __uint32_t xs_bmbt_lookup; 62 __uint32_t xs_bmbt_compare; 63 __uint32_t xs_bmbt_insrec; 64 __uint32_t xs_bmbt_delrec; 65# define XFSSTAT_END_DIRECTORY_OPS (XFSSTAT_END_BLOCK_MAP_BTREE+4) 66 __uint32_t xs_dir_lookup; 67 __uint32_t xs_dir_create; 68 __uint32_t xs_dir_remove; 69 __uint32_t xs_dir_getdents; 70# define XFSSTAT_END_TRANSACTIONS (XFSSTAT_END_DIRECTORY_OPS+3) 71 __uint32_t xs_trans_sync; 72 __uint32_t xs_trans_async; 73 __uint32_t xs_trans_empty; 74# define XFSSTAT_END_INODE_OPS (XFSSTAT_END_TRANSACTIONS+7) 75 __uint32_t xs_ig_attempts; 76 __uint32_t xs_ig_found; 77 __uint32_t xs_ig_frecycle; 78 __uint32_t xs_ig_missed; 79 __uint32_t xs_ig_dup; 80 __uint32_t xs_ig_reclaims; 81 __uint32_t xs_ig_attrchg; 82# define XFSSTAT_END_LOG_OPS (XFSSTAT_END_INODE_OPS+5) 83 __uint32_t xs_log_writes; 84 __uint32_t xs_log_blocks; 85 __uint32_t xs_log_noiclogs; 86 __uint32_t xs_log_force; 87 __uint32_t xs_log_force_sleep; 88# define XFSSTAT_END_TAIL_PUSHING (XFSSTAT_END_LOG_OPS+10) 89 __uint32_t xs_try_logspace; 90 __uint32_t xs_sleep_logspace; 91 __uint32_t xs_push_ail; 92 __uint32_t xs_push_ail_success; 93 __uint32_t xs_push_ail_pushbuf; 94 __uint32_t xs_push_ail_pinned; 95 __uint32_t xs_push_ail_locked; 96 __uint32_t xs_push_ail_flushing; 97 __uint32_t xs_push_ail_restarts; 98 __uint32_t xs_push_ail_flush; 99# define XFSSTAT_END_WRITE_CONVERT (XFSSTAT_END_TAIL_PUSHING+2) 100 __uint32_t xs_xstrat_quick; 101 __uint32_t xs_xstrat_split; 102# define XFSSTAT_END_READ_WRITE_OPS (XFSSTAT_END_WRITE_CONVERT+2) 103 __uint32_t xs_write_calls; 104 __uint32_t xs_read_calls; 105# define XFSSTAT_END_ATTRIBUTE_OPS (XFSSTAT_END_READ_WRITE_OPS+4) 106 __uint32_t xs_attr_get; 107 __uint32_t xs_attr_set; 108 __uint32_t xs_attr_remove; 109 __uint32_t xs_attr_list; 110# define XFSSTAT_END_INODE_CLUSTER (XFSSTAT_END_ATTRIBUTE_OPS+3) 111 __uint32_t xs_iflush_count; 112 __uint32_t xs_icluster_flushcnt; 113 __uint32_t xs_icluster_flushinode; 114# define XFSSTAT_END_VNODE_OPS (XFSSTAT_END_INODE_CLUSTER+8) 115 __uint32_t vn_active; /* # vnodes not on free lists */ 116 __uint32_t vn_alloc; /* # times vn_alloc called */ 117 __uint32_t vn_get; /* # times vn_get called */ 118 __uint32_t vn_hold; /* # times vn_hold called */ 119 __uint32_t vn_rele; /* # times vn_rele called */ 120 __uint32_t vn_reclaim; /* # times vn_reclaim called */ 121 __uint32_t vn_remove; /* # times vn_remove called */ 122 __uint32_t vn_free; /* # times vn_free called */ 123#define XFSSTAT_END_BUF (XFSSTAT_END_VNODE_OPS+9) 124 __uint32_t pb_get; 125 __uint32_t pb_create; 126 __uint32_t pb_get_locked; 127 __uint32_t pb_get_locked_waited; 128 __uint32_t pb_busy_locked; 129 __uint32_t pb_miss_locked; 130 __uint32_t pb_page_retries; 131 __uint32_t pb_page_found; 132 __uint32_t pb_get_read; 133/* Extra precision counters */ 134 __uint64_t xs_xstrat_bytes; 135 __uint64_t xs_write_bytes; 136 __uint64_t xs_read_bytes; 137}; 138 139extern struct xfsstats xfsstats; 140 141# define XFS_STATS_INC(count) ( xfsstats.count++ ) 142# define XFS_STATS_DEC(count) ( xfsstats.count-- ) 143# define XFS_STATS_ADD(count, inc) ( xfsstats.count += (inc) ) 144 145extern void xfs_init_procfs(void); 146extern void xfs_cleanup_procfs(void); 147 148 149#else /* !CONFIG_PROC_FS */ 150 151# define XFS_STATS_INC(count) 152# define XFS_STATS_DEC(count) 153# define XFS_STATS_ADD(count, inc) 154 155static __inline void xfs_init_procfs(void) { }; 156static __inline void xfs_cleanup_procfs(void) { }; 157 158#endif /* !CONFIG_PROC_FS */ 159 160#endif /* __XFS_STATS_H__ */ 161 162