73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0-only */
 | |
| /******************************************************************************
 | |
| 
 | |
| (c) 2008 NetApp.  All Rights Reserved.
 | |
| 
 | |
| 
 | |
| ******************************************************************************/
 | |
| 
 | |
| /*
 | |
|  * Functions to create and manage the backchannel
 | |
|  */
 | |
| 
 | |
| #ifndef _LINUX_SUNRPC_BC_XPRT_H
 | |
| #define _LINUX_SUNRPC_BC_XPRT_H
 | |
| 
 | |
| #include <linux/sunrpc/svcsock.h>
 | |
| #include <linux/sunrpc/xprt.h>
 | |
| #include <linux/sunrpc/sched.h>
 | |
| 
 | |
| #ifdef CONFIG_SUNRPC_BACKCHANNEL
 | |
| struct rpc_rqst *xprt_lookup_bc_request(struct rpc_xprt *xprt, __be32 xid);
 | |
| void xprt_complete_bc_request(struct rpc_rqst *req, uint32_t copied);
 | |
| void xprt_init_bc_request(struct rpc_rqst *req, struct rpc_task *task,
 | |
| 		const struct rpc_timeout *to);
 | |
| void xprt_free_bc_request(struct rpc_rqst *req);
 | |
| int xprt_setup_backchannel(struct rpc_xprt *, unsigned int min_reqs);
 | |
| void xprt_destroy_backchannel(struct rpc_xprt *, unsigned int max_reqs);
 | |
| 
 | |
| /* Socket backchannel transport methods */
 | |
| int xprt_setup_bc(struct rpc_xprt *xprt, unsigned int min_reqs);
 | |
| void xprt_destroy_bc(struct rpc_xprt *xprt, unsigned int max_reqs);
 | |
| void xprt_free_bc_rqst(struct rpc_rqst *req);
 | |
| unsigned int xprt_bc_max_slots(struct rpc_xprt *xprt);
 | |
| 
 | |
| /*
 | |
|  * Determine if a shared backchannel is in use
 | |
|  */
 | |
| static inline bool svc_is_backchannel(const struct svc_rqst *rqstp)
 | |
| {
 | |
| 	return rqstp->rq_server->sv_bc_enabled;
 | |
| }
 | |
| 
 | |
| static inline void set_bc_enabled(struct svc_serv *serv)
 | |
| {
 | |
| 	serv->sv_bc_enabled = true;
 | |
| }
 | |
| #else /* CONFIG_SUNRPC_BACKCHANNEL */
 | |
| static inline int xprt_setup_backchannel(struct rpc_xprt *xprt,
 | |
| 					 unsigned int min_reqs)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| static inline void xprt_destroy_backchannel(struct rpc_xprt *xprt,
 | |
| 					    unsigned int max_reqs)
 | |
| {
 | |
| }
 | |
| 
 | |
| static inline bool svc_is_backchannel(const struct svc_rqst *rqstp)
 | |
| {
 | |
| 	return false;
 | |
| }
 | |
| 
 | |
| static inline void set_bc_enabled(struct svc_serv *serv)
 | |
| {
 | |
| }
 | |
| 
 | |
| static inline void xprt_free_bc_request(struct rpc_rqst *req)
 | |
| {
 | |
| }
 | |
| #endif /* CONFIG_SUNRPC_BACKCHANNEL */
 | |
| #endif /* _LINUX_SUNRPC_BC_XPRT_H */
 |