nfs_flushd.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
- #ifndef NFS_CLUSTER_H
- #define NFS_CLUSTER_H
- #ifdef __KERNEL__
- #include <asm/atomic.h>
- #include <linux/nfs_fs_sb.h>
- /*
- * Counters of total number and pending number of requests.
- * When the total number of requests exceeds the hard limit, we stall
- * until it drops again.
- */
- #define MAX_REQUEST_HARD 256
- /*
- * Maximum number of requests per write cluster.
- * 32 requests per cluster account for 128K of data on an intel box.
- * Note: it's a good idea to make this number smaller than MAX_REQUEST_SOFT.
- *
- * For 100Mbps Ethernet, 128 pages (i.e. 256K) per cluster gives much
- * better performance.
- */
- #define REQUEST_HASH_SIZE 16
- #define REQUEST_NR(off) ((off) >> PAGE_CACHE_SHIFT)
- #define REQUEST_HASH(ino, off) (((ino) ^ REQUEST_NR(off)) & (REQUEST_HASH_SIZE - 1))
- /*
- * Functions
- */
- extern int nfs_reqlist_alloc(struct nfs_server *);
- extern void nfs_reqlist_free(struct nfs_server *);
- extern int nfs_reqlist_init(struct nfs_server *);
- extern void nfs_reqlist_exit(struct nfs_server *);
- extern void nfs_wake_flushd(void);
- /*
- * This is the per-mount writeback cache.
- */
- struct nfs_reqlist {
- atomic_t nr_requests;
- unsigned long runat;
- wait_queue_head_t request_wait;
- /* The async RPC task that is responsible for scanning the
- * requests.
- */
- struct rpc_task *task; /* request flush task */
- /* Authentication flavor handle for this NFS client */
- struct rpc_auth *auth;
- /* The list of all inodes with pending writebacks. */
- struct inode *inodes;
- };
- #endif
- #endif