Branch data Line data Source code
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> 32 : : #include <linux/sunrpc/sched.h> 33 : : 34 : : #ifdef CONFIG_SUNRPC_BACKCHANNEL 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); 37 : : void xprt_init_bc_request(struct rpc_rqst *req, struct rpc_task *task); 38 : : void xprt_free_bc_request(struct rpc_rqst *req); 39 : : int xprt_setup_backchannel(struct rpc_xprt *, unsigned int min_reqs); 40 : : void xprt_destroy_backchannel(struct rpc_xprt *, unsigned int max_reqs); 41 : : 42 : : /* Socket backchannel transport methods */ 43 : : int xprt_setup_bc(struct rpc_xprt *xprt, unsigned int min_reqs); 44 : : void xprt_destroy_bc(struct rpc_xprt *xprt, unsigned int max_reqs); 45 : : void xprt_free_bc_rqst(struct rpc_rqst *req); 46 : : unsigned int xprt_bc_max_slots(struct rpc_xprt *xprt); 47 : : 48 : : /* 49 : : * Determine if a shared backchannel is in use 50 : : */ 51 : : static inline bool svc_is_backchannel(const struct svc_rqst *rqstp) 52 : : { 53 : 0 : return rqstp->rq_server->sv_bc_enabled; 54 : : } 55 : : 56 : : static inline void set_bc_enabled(struct svc_serv *serv) 57 : : { 58 : 0 : serv->sv_bc_enabled = true; 59 : : } 60 : : #else /* CONFIG_SUNRPC_BACKCHANNEL */ 61 : : static inline int xprt_setup_backchannel(struct rpc_xprt *xprt, 62 : : unsigned int min_reqs) 63 : : { 64 : : return 0; 65 : : } 66 : : 67 : : static inline void xprt_destroy_backchannel(struct rpc_xprt *xprt, 68 : : unsigned int max_reqs) 69 : : { 70 : : } 71 : : 72 : : static inline bool svc_is_backchannel(const struct svc_rqst *rqstp) 73 : : { 74 : : return false; 75 : : } 76 : : 77 : : static inline void set_bc_enabled(struct svc_serv *serv) 78 : : { 79 : : } 80 : : 81 : : static inline void xprt_free_bc_request(struct rpc_rqst *req) 82 : : { 83 : : } 84 : : #endif /* CONFIG_SUNRPC_BACKCHANNEL */ 85 : : #endif /* _LINUX_SUNRPC_BC_XPRT_H */ 86 : :