1
2
3
4
5
6
7
8
9#ifndef NFSCACHE_H
10#define NFSCACHE_H
11
12#include <linux/sunrpc/svc.h>
13
14
15
16
17
18
19
20
21struct svc_cacherep {
22 struct {
23
24 __be32 k_xid;
25 __wsum k_csum;
26 u32 k_proc;
27 u32 k_prot;
28 u32 k_vers;
29 unsigned int k_len;
30 struct sockaddr_in6 k_addr;
31 } c_key;
32
33 struct rb_node c_node;
34 struct list_head c_lru;
35 unsigned char c_state,
36 c_type,
37 c_secure : 1;
38 unsigned long c_timestamp;
39 union {
40 struct kvec u_vec;
41 __be32 u_status;
42 } c_u;
43};
44
45#define c_replvec c_u.u_vec
46#define c_replstat c_u.u_status
47
48
49enum {
50 RC_UNUSED,
51 RC_INPROG,
52 RC_DONE
53};
54
55
56enum {
57 RC_DROPIT,
58 RC_REPLY,
59 RC_DOIT
60};
61
62
63
64
65
66
67
68enum {
69 RC_NOCACHE,
70 RC_REPLSTAT,
71 RC_REPLBUFF,
72};
73
74
75#define RC_EXPIRE (120 * HZ)
76
77
78#define RC_CSUMLEN (256U)
79
80int nfsd_reply_cache_init(void);
81void nfsd_reply_cache_shutdown(void);
82int nfsd_cache_lookup(struct svc_rqst *);
83void nfsd_cache_update(struct svc_rqst *, int, __be32 *);
84int nfsd_reply_cache_stats_open(struct inode *, struct file *);
85
86#endif
87