import of ftp.dlink.com/GPL/DSMG-600_reB/ppclinux.tar.gz
[linux-2.4.21-pre4.git] / include / linux / nfsiod.h
1 /*
2  * linux/include/linux/nfsiod.h
3  *
4  * Declarations for asynchronous NFS RPC calls.
5  *
6  */
7
8 #ifndef _LINUX_NFSIOD_H
9 #define _LINUX_NFSIOD_H
10
11 #include <linux/rpcsock.h>
12 #include <linux/nfs_fs.h>
13
14 #ifdef __KERNEL__
15
16 /*
17  * This is the callback handler for nfsiod requests.
18  * Note that the callback procedure must NOT sleep.
19  */
20 struct nfsiod_req;
21 typedef int     (*nfsiod_callback_t)(int result, struct nfsiod_req *);
22
23 /*
24  * This is the nfsiod request struct.
25  */
26 struct nfsiod_req {
27         struct nfsiod_req *     rq_next;
28         struct nfsiod_req *     rq_prev;
29         wait_queue_head_t       rq_wait;
30         struct rpc_ioreq        rq_rpcreq;
31         nfsiod_callback_t       rq_callback;
32         struct nfs_server *     rq_server;
33         struct inode *          rq_inode;
34         struct page *           rq_page;
35
36         /* user creds */
37         uid_t                   rq_fsuid;
38         gid_t                   rq_fsgid;
39         int                     rq_groups[NGROUPS];
40
41         /* retry handling */
42         int                     rq_retries;
43 };
44
45 struct nfsiod_req *     nfsiod_reserve(struct nfs_server *);
46 void                    nfsiod_release(struct nfsiod_req *);
47 void                    nfsiod_enqueue(struct nfsiod_req *);
48 int                     nfsiod(void);
49
50
51 #endif /* __KERNEL__ */
52 #endif /* _LINUX_NFSIOD_H */