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 */
53