Branch data Line data Source code
1 : : /*
2 : : * linux/fs/nfs/iostat.h
3 : : *
4 : : * Declarations for NFS client per-mount statistics
5 : : *
6 : : * Copyright (C) 2005, 2006 Chuck Lever <cel@netapp.com>
7 : : *
8 : : */
9 : :
10 : : #ifndef _NFS_IOSTAT
11 : : #define _NFS_IOSTAT
12 : :
13 : : #include <linux/percpu.h>
14 : : #include <linux/cache.h>
15 : : #include <linux/nfs_iostat.h>
16 : :
17 : : struct nfs_iostats {
18 : : unsigned long long bytes[__NFSIOS_BYTESMAX];
19 : : #ifdef CONFIG_NFS_FSCACHE
20 : : unsigned long long fscache[__NFSIOS_FSCACHEMAX];
21 : : #endif
22 : : unsigned long events[__NFSIOS_COUNTSMAX];
23 : : } ____cacheline_aligned;
24 : :
25 : : static inline void nfs_inc_server_stats(const struct nfs_server *server,
26 : : enum nfs_stat_eventcounters stat)
27 : : {
28 : 0 : this_cpu_inc(server->io_stats->events[stat]);
29 : : }
30 : :
31 : 0 : static inline void nfs_inc_stats(const struct inode *inode,
32 : : enum nfs_stat_eventcounters stat)
33 : : {
34 : : nfs_inc_server_stats(NFS_SERVER(inode), stat);
35 : : }
36 : :
37 : : static inline void nfs_add_server_stats(const struct nfs_server *server,
38 : : enum nfs_stat_bytecounters stat,
39 : : long addend)
40 : : {
41 : 0 : this_cpu_add(server->io_stats->bytes[stat], addend);
42 : : }
43 : :
44 : 0 : static inline void nfs_add_stats(const struct inode *inode,
45 : : enum nfs_stat_bytecounters stat,
46 : : long addend)
47 : : {
48 : : nfs_add_server_stats(NFS_SERVER(inode), stat, addend);
49 : : }
50 : :
51 : : #ifdef CONFIG_NFS_FSCACHE
52 : : static inline void nfs_add_fscache_stats(struct inode *inode,
53 : : enum nfs_stat_fscachecounters stat,
54 : : long addend)
55 : : {
56 : : this_cpu_add(NFS_SERVER(inode)->io_stats->fscache[stat], addend);
57 : : }
58 : : #endif
59 : :
60 : : static inline struct nfs_iostats __percpu *nfs_alloc_iostats(void)
61 : : {
62 : 0 : return alloc_percpu(struct nfs_iostats);
63 : : }
64 : :
65 : : static inline void nfs_free_iostats(struct nfs_iostats __percpu *stats)
66 : : {
67 [ # # ][ # # ]: 0 : if (stats != NULL)
68 : 0 : free_percpu(stats);
69 : : }
70 : :
71 : : #endif /* _NFS_IOSTAT */
|