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