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 */
20struct nfsiod_req;
21typedef int	(*nfsiod_callback_t)(int result, struct nfsiod_req *);
22
23/*
24 * This is the nfsiod request struct.
25 */
26struct 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
45struct nfsiod_req *	nfsiod_reserve(struct nfs_server *);
46void			nfsiod_release(struct nfsiod_req *);
47void			nfsiod_enqueue(struct nfsiod_req *);
48int			nfsiod(void);
49
50
51#endif /* __KERNEL__ */
52#endif /* _LINUX_NFSIOD_H */
53