nfs_flushd.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #ifndef NFS_CLUSTER_H
  2. #define NFS_CLUSTER_H
  3. #ifdef __KERNEL__
  4. #include <asm/atomic.h>
  5. #include <linux/nfs_fs_sb.h>
  6. /*
  7.  * Counters of total number and pending number of requests.
  8.  * When the total number of requests exceeds the hard limit, we stall
  9.  * until it drops again.
  10.  */
  11. #define MAX_REQUEST_HARD        256
  12. /*
  13.  * Maximum number of requests per write cluster.
  14.  * 32 requests per cluster account for 128K of data on an intel box.
  15.  * Note: it's a good idea to make this number smaller than MAX_REQUEST_SOFT.
  16.  *
  17.  * For 100Mbps Ethernet, 128 pages (i.e. 256K) per cluster gives much
  18.  * better performance.
  19.  */
  20. #define REQUEST_HASH_SIZE 16
  21. #define REQUEST_NR(off) ((off) >> PAGE_CACHE_SHIFT)
  22. #define REQUEST_HASH(ino, off) (((ino) ^ REQUEST_NR(off)) & (REQUEST_HASH_SIZE - 1))
  23. /*
  24.  * Functions
  25.  */
  26. extern int nfs_reqlist_alloc(struct nfs_server *);
  27. extern void nfs_reqlist_free(struct nfs_server *);
  28. extern int nfs_reqlist_init(struct nfs_server *);
  29. extern void nfs_reqlist_exit(struct nfs_server *);
  30. extern void nfs_wake_flushd(void);
  31. /*
  32.  * This is the per-mount writeback cache.
  33.  */
  34. struct nfs_reqlist {
  35. atomic_t nr_requests;
  36. unsigned long runat;
  37. wait_queue_head_t request_wait;
  38. /* The async RPC task that is responsible for scanning the
  39.  * requests.
  40.  */
  41. struct rpc_task *task; /* request flush task */
  42. /* Authentication flavor handle for this NFS client */
  43. struct rpc_auth *auth;
  44. /* The list of all inodes with pending writebacks.  */
  45. struct inode *inodes;
  46. };
  47. #endif
  48. #endif