| .. | .. |
|---|
| 10 | 10 | #define NFSCACHE_H |
|---|
| 11 | 11 | |
|---|
| 12 | 12 | #include <linux/sunrpc/svc.h> |
|---|
| 13 | +#include "netns.h" |
|---|
| 13 | 14 | |
|---|
| 14 | 15 | /* |
|---|
| 15 | 16 | * Representation of a reply cache entry. |
|---|
| .. | .. |
|---|
| 19 | 20 | * is much larger than a sockaddr_in6. |
|---|
| 20 | 21 | */ |
|---|
| 21 | 22 | struct svc_cacherep { |
|---|
| 22 | | - struct list_head c_lru; |
|---|
| 23 | + struct { |
|---|
| 24 | + /* Keep often-read xid, csum in the same cache line: */ |
|---|
| 25 | + __be32 k_xid; |
|---|
| 26 | + __wsum k_csum; |
|---|
| 27 | + u32 k_proc; |
|---|
| 28 | + u32 k_prot; |
|---|
| 29 | + u32 k_vers; |
|---|
| 30 | + unsigned int k_len; |
|---|
| 31 | + struct sockaddr_in6 k_addr; |
|---|
| 32 | + } c_key; |
|---|
| 23 | 33 | |
|---|
| 34 | + struct rb_node c_node; |
|---|
| 35 | + struct list_head c_lru; |
|---|
| 24 | 36 | unsigned char c_state, /* unused, inprog, done */ |
|---|
| 25 | 37 | c_type, /* status, buffer */ |
|---|
| 26 | 38 | c_secure : 1; /* req came from port < 1024 */ |
|---|
| 27 | | - struct sockaddr_in6 c_addr; |
|---|
| 28 | | - __be32 c_xid; |
|---|
| 29 | | - u32 c_prot; |
|---|
| 30 | | - u32 c_proc; |
|---|
| 31 | | - u32 c_vers; |
|---|
| 32 | | - unsigned int c_len; |
|---|
| 33 | | - __wsum c_csum; |
|---|
| 34 | 39 | unsigned long c_timestamp; |
|---|
| 35 | 40 | union { |
|---|
| 36 | 41 | struct kvec u_vec; |
|---|
| .. | .. |
|---|
| 73 | 78 | /* Checksum this amount of the request */ |
|---|
| 74 | 79 | #define RC_CSUMLEN (256U) |
|---|
| 75 | 80 | |
|---|
| 76 | | -int nfsd_reply_cache_init(void); |
|---|
| 77 | | -void nfsd_reply_cache_shutdown(void); |
|---|
| 81 | +int nfsd_drc_slab_create(void); |
|---|
| 82 | +void nfsd_drc_slab_free(void); |
|---|
| 83 | +int nfsd_reply_cache_init(struct nfsd_net *); |
|---|
| 84 | +void nfsd_reply_cache_shutdown(struct nfsd_net *); |
|---|
| 78 | 85 | int nfsd_cache_lookup(struct svc_rqst *); |
|---|
| 79 | 86 | void nfsd_cache_update(struct svc_rqst *, int, __be32 *); |
|---|
| 80 | 87 | int nfsd_reply_cache_stats_open(struct inode *, struct file *); |
|---|