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