vfs: nfsctl.c un-used nfsd #includes
[safe/jmp/linux-2.6] / include / linux / nfsd / cache.h
1 /*
2  * include/linux/nfsd/cache.h
3  *
4  * Request reply cache. This was heavily inspired by the
5  * implementation in 4.3BSD/4.4BSD.
6  *
7  * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de>
8  */
9
10 #ifndef NFSCACHE_H
11 #define NFSCACHE_H
12
13 #include <linux/sunrpc/svc.h>
14
15 /*
16  * Representation of a reply cache entry.
17  */
18 struct svc_cacherep {
19         struct hlist_node       c_hash;
20         struct list_head        c_lru;
21
22         unsigned char           c_state,        /* unused, inprog, done */
23                                 c_type,         /* status, buffer */
24                                 c_secure : 1;   /* req came from port < 1024 */
25         struct sockaddr_in      c_addr;
26         __be32                  c_xid;
27         u32                     c_prot;
28         u32                     c_proc;
29         u32                     c_vers;
30         unsigned long           c_timestamp;
31         union {
32                 struct kvec     u_vec;
33                 __be32          u_status;
34         }                       c_u;
35 };
36
37 #define c_replvec               c_u.u_vec
38 #define c_replstat              c_u.u_status
39
40 /* cache entry states */
41 enum {
42         RC_UNUSED,
43         RC_INPROG,
44         RC_DONE
45 };
46
47 /* return values */
48 enum {
49         RC_DROPIT,
50         RC_REPLY,
51         RC_DOIT,
52         RC_INTR
53 };
54
55 /*
56  * Cache types.
57  * We may want to add more types one day, e.g. for diropres and
58  * attrstat replies. Using cache entries with fixed length instead
59  * of buffer pointers may be more efficient.
60  */
61 enum {
62         RC_NOCACHE,
63         RC_REPLSTAT,
64         RC_REPLBUFF,
65 };
66
67 /*
68  * If requests are retransmitted within this interval, they're dropped.
69  */
70 #define RC_DELAY                (HZ/5)
71
72 int     nfsd_reply_cache_init(void);
73 void    nfsd_reply_cache_shutdown(void);
74 int     nfsd_cache_lookup(struct svc_rqst *, int);
75 void    nfsd_cache_update(struct svc_rqst *, int, __be32 *);
76
77 #ifdef CONFIG_NFSD_V4
78 void    nfsd4_set_statp(struct svc_rqst *rqstp, __be32 *statp);
79 #else  /* CONFIG_NFSD_V4 */
80 static inline void nfsd4_set_statp(struct svc_rqst *rqstp, __be32 *statp)
81 {
82 }
83 #endif /* CONFIG_NFSD_V4 */
84
85 #endif /* NFSCACHE_H */