Subversion Repositories shark

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
423 giacomo 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
#ifdef __KERNEL__
14
#include <linux/in.h>
15
#include <linux/uio.h>
16
 
17
/*
18
 * Representation of a reply cache entry. The first two members *must*
19
 * be hash_next and hash_prev.
20
 */
21
struct svc_cacherep {
22
        struct svc_cacherep *   c_hash_next;
23
        struct svc_cacherep *   c_hash_prev;
24
        struct svc_cacherep *   c_lru_next;
25
        struct svc_cacherep *   c_lru_prev;
26
        unsigned char           c_state,        /* unused, inprog, done */
27
                                c_type,         /* status, buffer */
28
                                c_secure : 1;   /* req came from port < 1024 */
29
        struct sockaddr_in      c_addr;
30
        u32                     c_xid;
31
        u32                     c_prot;
32
        u32                     c_proc;
33
        u32                     c_vers;
34
        unsigned long           c_timestamp;
35
        union {
36
                struct iovec    u_vec;
37
                u32             u_status;
38
        }                       c_u;
39
};
40
 
41
#define c_replvec               c_u.u_vec
42
#define c_replstat              c_u.u_status
43
 
44
/* cache entry states */
45
enum {
46
        RC_UNUSED,
47
        RC_INPROG,
48
        RC_DONE
49
};
50
 
51
/* return values */
52
enum {
53
        RC_DROPIT,
54
        RC_REPLY,
55
        RC_DOIT,
56
        RC_INTR
57
};
58
 
59
/*
60
 * Cache types.
61
 * We may want to add more types one day, e.g. for diropres and
62
 * attrstat replies. Using cache entries with fixed length instead
63
 * of buffer pointers may be more efficient.
64
 */
65
enum {
66
        RC_NOCACHE,
67
        RC_REPLSTAT,
68
        RC_REPLBUFF,
69
};
70
 
71
/*
72
 * If requests are retransmitted within this interval, they're dropped.
73
 */
74
#define RC_DELAY                (HZ/5)
75
 
76
void    nfsd_cache_init(void);
77
void    nfsd_cache_shutdown(void);
78
int     nfsd_cache_lookup(struct svc_rqst *, int);
79
void    nfsd_cache_update(struct svc_rqst *, int, u32 *);
80
 
81
#endif /* __KERNEL__ */
82
#endif /* NFSCACHE_H */