Commit | Line | Data |
---|---|---|
4a8d70bf RL |
1 | /****************************************************************************** |
2 | ||
3 | (c) 2008 NetApp. All Rights Reserved. | |
4 | ||
5 | NetApp provides this source code under the GPL v2 License. | |
6 | The GPL v2 license is available at | |
7 | http://opensource.org/licenses/gpl-license.php. | |
8 | ||
9 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
10 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
11 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
12 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR | |
13 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | |
14 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | |
15 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | |
16 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |
17 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | |
18 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
19 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
20 | ||
21 | ******************************************************************************/ | |
22 | ||
23 | /* | |
24 | * Functions to create and manage the backchannel | |
25 | */ | |
26 | ||
27 | #ifndef _LINUX_SUNRPC_BC_XPRT_H | |
28 | #define _LINUX_SUNRPC_BC_XPRT_H | |
29 | ||
30 | #include <linux/sunrpc/svcsock.h> | |
31 | #include <linux/sunrpc/xprt.h> | |
0d90ba1c | 32 | #include <linux/sunrpc/sched.h> |
4a8d70bf | 33 | |
9e00abc3 | 34 | #ifdef CONFIG_SUNRPC_BACKCHANNEL |
2ea24497 TM |
35 | struct rpc_rqst *xprt_lookup_bc_request(struct rpc_xprt *xprt, __be32 xid); |
36 | void xprt_complete_bc_request(struct rpc_rqst *req, uint32_t copied); | |
4a8d70bf RL |
37 | void xprt_free_bc_request(struct rpc_rqst *req); |
38 | int xprt_setup_backchannel(struct rpc_xprt *, unsigned int min_reqs); | |
09acfea5 | 39 | void xprt_destroy_backchannel(struct rpc_xprt *, unsigned int max_reqs); |
ba17686f | 40 | |
42e5c3e2 CL |
41 | /* Socket backchannel transport methods */ |
42 | int xprt_setup_bc(struct rpc_xprt *xprt, unsigned int min_reqs); | |
43 | void xprt_destroy_bc(struct rpc_xprt *xprt, unsigned int max_reqs); | |
44 | void xprt_free_bc_rqst(struct rpc_rqst *req); | |
45 | ||
ba17686f AA |
46 | /* |
47 | * Determine if a shared backchannel is in use | |
48 | */ | |
49 | static inline int svc_is_backchannel(const struct svc_rqst *rqstp) | |
50 | { | |
4a19de0f | 51 | if (rqstp->rq_server->sv_bc_xprt) |
ba17686f AA |
52 | return 1; |
53 | return 0; | |
54 | } | |
9e00abc3 | 55 | #else /* CONFIG_SUNRPC_BACKCHANNEL */ |
4a8d70bf RL |
56 | static inline int xprt_setup_backchannel(struct rpc_xprt *xprt, |
57 | unsigned int min_reqs) | |
58 | { | |
59 | return 0; | |
60 | } | |
ba17686f AA |
61 | |
62 | static inline int svc_is_backchannel(const struct svc_rqst *rqstp) | |
63 | { | |
64 | return 0; | |
65 | } | |
c9acb42e TM |
66 | |
67 | static inline void xprt_free_bc_request(struct rpc_rqst *req) | |
68 | { | |
69 | } | |
9e00abc3 | 70 | #endif /* CONFIG_SUNRPC_BACKCHANNEL */ |
4a8d70bf RL |
71 | #endif /* _LINUX_SUNRPC_BC_XPRT_H */ |
72 |