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