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