mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.8 KiB
86 lines
2.8 KiB
/****************************************************************************** |
|
|
|
(c) 2008 NetApp. All Rights Reserved. |
|
|
|
NetApp provides this source code under the GPL v2 License. |
|
The GPL v2 license is available at |
|
https://opensource.org/licenses/gpl-license.php. |
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
|
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
|
|
******************************************************************************/ |
|
|
|
/* |
|
* 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); |
|
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 */ |
|
|
|
|