Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) // SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * Copyright (c) 2000,2005 Silicon Graphics, Inc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  * All Rights Reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) #ifndef __XFS_STATS_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) #define __XFS_STATS_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) #include <linux/percpu.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13)  * The btree stats arrays have fixed offsets for the different stats. We
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14)  * store the base index in the btree cursor via XFS_STATS_CALC_INDEX() and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15)  * that allows us to use fixed offsets into the stats array for each btree
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16)  * stat. These index offsets are defined in the order they will be emitted
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17)  * in the stats files, so it is possible to add new btree stat types by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18)  * appending to the enum list below.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) enum {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 	__XBTS_lookup = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 	__XBTS_compare = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 	__XBTS_insrec = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	__XBTS_delrec = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 	__XBTS_newroot = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 	__XBTS_killroot = 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 	__XBTS_increment = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 	__XBTS_decrement = 7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 	__XBTS_lshift = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 	__XBTS_rshift = 9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 	__XBTS_split = 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	__XBTS_join = 11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 	__XBTS_alloc = 12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	__XBTS_free = 13,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 	__XBTS_moves = 14,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	__XBTS_MAX = 15,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41)  * XFS global statistics
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) struct __xfsstats {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	uint32_t		xs_allocx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	uint32_t		xs_allocb;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	uint32_t		xs_freex;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	uint32_t		xs_freeb;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	uint32_t		xs_abt_lookup;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	uint32_t		xs_abt_compare;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	uint32_t		xs_abt_insrec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 	uint32_t		xs_abt_delrec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	uint32_t		xs_blk_mapr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 	uint32_t		xs_blk_mapw;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	uint32_t		xs_blk_unmap;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	uint32_t		xs_add_exlist;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	uint32_t		xs_del_exlist;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	uint32_t		xs_look_exlist;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 	uint32_t		xs_cmp_exlist;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	uint32_t		xs_bmbt_lookup;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 	uint32_t		xs_bmbt_compare;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 	uint32_t		xs_bmbt_insrec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 	uint32_t		xs_bmbt_delrec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 	uint32_t		xs_dir_lookup;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	uint32_t		xs_dir_create;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	uint32_t		xs_dir_remove;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 	uint32_t		xs_dir_getdents;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 	uint32_t		xs_trans_sync;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	uint32_t		xs_trans_async;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	uint32_t		xs_trans_empty;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	uint32_t		xs_ig_attempts;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 	uint32_t		xs_ig_found;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	uint32_t		xs_ig_frecycle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	uint32_t		xs_ig_missed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	uint32_t		xs_ig_dup;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	uint32_t		xs_ig_reclaims;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	uint32_t		xs_ig_attrchg;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	uint32_t		xs_log_writes;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	uint32_t		xs_log_blocks;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	uint32_t		xs_log_noiclogs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 	uint32_t		xs_log_force;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	uint32_t		xs_log_force_sleep;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	uint32_t		xs_try_logspace;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 	uint32_t		xs_sleep_logspace;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	uint32_t		xs_push_ail;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 	uint32_t		xs_push_ail_success;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 	uint32_t		xs_push_ail_pushbuf;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 	uint32_t		xs_push_ail_pinned;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	uint32_t		xs_push_ail_locked;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 	uint32_t		xs_push_ail_flushing;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 	uint32_t		xs_push_ail_restarts;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 	uint32_t		xs_push_ail_flush;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 	uint32_t		xs_xstrat_quick;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 	uint32_t		xs_xstrat_split;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 	uint32_t		xs_write_calls;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 	uint32_t		xs_read_calls;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	uint32_t		xs_attr_get;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	uint32_t		xs_attr_set;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 	uint32_t		xs_attr_remove;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 	uint32_t		xs_attr_list;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 	uint32_t		xs_iflush_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 	uint32_t		xs_icluster_flushcnt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 	uint32_t		xs_icluster_flushinode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	uint32_t		vn_active;	/* # vnodes not on free lists */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	uint32_t		vn_alloc;	/* # times vn_alloc called */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	uint32_t		vn_get;		/* # times vn_get called */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 	uint32_t		vn_hold;	/* # times vn_hold called */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 	uint32_t		vn_rele;	/* # times vn_rele called */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	uint32_t		vn_reclaim;	/* # times vn_reclaim called */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 	uint32_t		vn_remove;	/* # times vn_remove called */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 	uint32_t		vn_free;	/* # times vn_free called */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 	uint32_t		xb_get;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 	uint32_t		xb_create;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 	uint32_t		xb_get_locked;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 	uint32_t		xb_get_locked_waited;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 	uint32_t		xb_busy_locked;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 	uint32_t		xb_miss_locked;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 	uint32_t		xb_page_retries;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	uint32_t		xb_page_found;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 	uint32_t		xb_get_read;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) /* Version 2 btree counters */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 	uint32_t		xs_abtb_2[__XBTS_MAX];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 	uint32_t		xs_abtc_2[__XBTS_MAX];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 	uint32_t		xs_bmbt_2[__XBTS_MAX];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 	uint32_t		xs_ibt_2[__XBTS_MAX];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 	uint32_t		xs_fibt_2[__XBTS_MAX];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 	uint32_t		xs_rmap_2[__XBTS_MAX];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 	uint32_t		xs_refcbt_2[__XBTS_MAX];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 	uint32_t		xs_qm_dqreclaims;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 	uint32_t		xs_qm_dqreclaim_misses;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 	uint32_t		xs_qm_dquot_dups;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 	uint32_t		xs_qm_dqcachemisses;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 	uint32_t		xs_qm_dqcachehits;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 	uint32_t		xs_qm_dqwants;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 	uint32_t		xs_qm_dquot;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 	uint32_t		xs_qm_dquot_unused;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) /* Extra precision counters */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 	uint64_t		xs_xstrat_bytes;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 	uint64_t		xs_write_bytes;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 	uint64_t		xs_read_bytes;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 	uint64_t		defer_relog;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #define	xfsstats_offset(f)	(offsetof(struct __xfsstats, f)/sizeof(uint32_t))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) struct xfsstats {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 	union {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 		struct __xfsstats	s;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 		uint32_t		a[xfsstats_offset(xs_qm_dquot)];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153)  * simple wrapper for getting the array index of s struct member offset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) #define XFS_STATS_CALC_INDEX(member)	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 	(offsetof(struct __xfsstats, member) / (int)sizeof(uint32_t))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) int xfs_stats_format(struct xfsstats __percpu *stats, char *buf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) void xfs_stats_clearall(struct xfsstats __percpu *stats);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) extern struct xstats xfsstats;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) #define XFS_STATS_INC(mp, v)					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) do {								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 	per_cpu_ptr(xfsstats.xs_stats, current_cpu())->s.v++;	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 	per_cpu_ptr(mp->m_stats.xs_stats, current_cpu())->s.v++;	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) } while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) #define XFS_STATS_DEC(mp, v)					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) do {								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 	per_cpu_ptr(xfsstats.xs_stats, current_cpu())->s.v--;	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 	per_cpu_ptr(mp->m_stats.xs_stats, current_cpu())->s.v--;	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) } while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) #define XFS_STATS_ADD(mp, v, inc)					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) do {									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 	per_cpu_ptr(xfsstats.xs_stats, current_cpu())->s.v += (inc);	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 	per_cpu_ptr(mp->m_stats.xs_stats, current_cpu())->s.v += (inc);	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) } while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) #define XFS_STATS_INC_OFF(mp, off)				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) do {								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 	per_cpu_ptr(xfsstats.xs_stats, current_cpu())->a[off]++;	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 	per_cpu_ptr(mp->m_stats.xs_stats, current_cpu())->a[off]++;	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) } while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) #define XFS_STATS_DEC_OFF(mp, off)					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) do {								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) 	per_cpu_ptr(xfsstats.xs_stats, current_cpu())->a[off];	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 	per_cpu_ptr(mp->m_stats.xs_stats, current_cpu())->a[off];	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) } while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) #define XFS_STATS_ADD_OFF(mp, off, inc)					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) do {									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 	per_cpu_ptr(xfsstats.xs_stats, current_cpu())->a[off] += (inc);	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 	per_cpu_ptr(mp->m_stats.xs_stats, current_cpu())->a[off] += (inc);	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) } while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) #if defined(CONFIG_PROC_FS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) extern int xfs_init_procfs(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) extern void xfs_cleanup_procfs(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) #else	/* !CONFIG_PROC_FS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) static inline int xfs_init_procfs(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) static inline void xfs_cleanup_procfs(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) #endif	/* !CONFIG_PROC_FS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) #endif /* __XFS_STATS_H__ */