Root/
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 | struct nfs_iostats *iostats; |
29 | int cpu; |
30 | |
31 | cpu = get_cpu(); |
32 | iostats = per_cpu_ptr(server->io_stats, cpu); |
33 | iostats->events[stat]++; |
34 | put_cpu(); |
35 | } |
36 | |
37 | static inline void nfs_inc_stats(const struct inode *inode, |
38 | enum nfs_stat_eventcounters stat) |
39 | { |
40 | nfs_inc_server_stats(NFS_SERVER(inode), stat); |
41 | } |
42 | |
43 | static inline void nfs_add_server_stats(const struct nfs_server *server, |
44 | enum nfs_stat_bytecounters stat, |
45 | unsigned long addend) |
46 | { |
47 | struct nfs_iostats *iostats; |
48 | int cpu; |
49 | |
50 | cpu = get_cpu(); |
51 | iostats = per_cpu_ptr(server->io_stats, cpu); |
52 | iostats->bytes[stat] += addend; |
53 | put_cpu(); |
54 | } |
55 | |
56 | static inline void nfs_add_stats(const struct inode *inode, |
57 | enum nfs_stat_bytecounters stat, |
58 | unsigned long addend) |
59 | { |
60 | nfs_add_server_stats(NFS_SERVER(inode), stat, addend); |
61 | } |
62 | |
63 | #ifdef CONFIG_NFS_FSCACHE |
64 | static inline void nfs_add_fscache_stats(struct inode *inode, |
65 | enum nfs_stat_fscachecounters stat, |
66 | unsigned long addend) |
67 | { |
68 | struct nfs_iostats *iostats; |
69 | int cpu; |
70 | |
71 | cpu = get_cpu(); |
72 | iostats = per_cpu_ptr(NFS_SERVER(inode)->io_stats, cpu); |
73 | iostats->fscache[stat] += addend; |
74 | put_cpu(); |
75 | } |
76 | #endif |
77 | |
78 | static inline struct nfs_iostats *nfs_alloc_iostats(void) |
79 | { |
80 | return alloc_percpu(struct nfs_iostats); |
81 | } |
82 | |
83 | static inline void nfs_free_iostats(struct nfs_iostats *stats) |
84 | { |
85 | if (stats != NULL) |
86 | free_percpu(stats); |
87 | } |
88 | |
89 | #endif /* _NFS_IOSTAT */ |
90 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9