]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/nfsd/cache.h
Merge branch 'drm-nouveau-fixes-3.9' of git://anongit.freedesktop.org/git/nouveau...
[karo-tx-linux.git] / fs / nfsd / cache.h
index 93cc9d34c459cbf2e7b3b51332bbc2ad9123ff5f..87fd1410b737e19093157452e42f10f12073676f 100644 (file)
 
 /*
  * Representation of a reply cache entry.
+ *
+ * Note that we use a sockaddr_in6 to hold the address instead of the more
+ * typical sockaddr_storage. This is for space reasons, since sockaddr_storage
+ * is much larger than a sockaddr_in6.
  */
 struct svc_cacherep {
        struct hlist_node       c_hash;
@@ -20,11 +24,13 @@ struct svc_cacherep {
        unsigned char           c_state,        /* unused, inprog, done */
                                c_type,         /* status, buffer */
                                c_secure : 1;   /* req came from port < 1024 */
-       struct sockaddr_in      c_addr;
+       struct sockaddr_in6     c_addr;
        __be32                  c_xid;
        u32                     c_prot;
        u32                     c_proc;
        u32                     c_vers;
+       unsigned int            c_len;
+       __wsum                  c_csum;
        unsigned long           c_timestamp;
        union {
                struct kvec     u_vec;
@@ -46,8 +52,7 @@ enum {
 enum {
        RC_DROPIT,
        RC_REPLY,
-       RC_DOIT,
-       RC_INTR
+       RC_DOIT
 };
 
 /*
@@ -67,6 +72,12 @@ enum {
  */
 #define RC_DELAY               (HZ/5)
 
+/* Cache entries expire after this time period */
+#define RC_EXPIRE              (120 * HZ)
+
+/* Checksum this amount of the request */
+#define RC_CSUMLEN             (256U)
+
 int    nfsd_reply_cache_init(void);
 void   nfsd_reply_cache_shutdown(void);
 int    nfsd_cache_lookup(struct svc_rqst *);