| /****************************************************************************** |
| |
| (c) 2008 NetApp. All Rights Reserved. |
| |
| NetApp provides this source code under the GPL v2 License. |
| The GPL v2 license is available at |
| http://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_NFS_V4_1 |
| struct rpc_rqst *xprt_alloc_bc_request(struct rpc_xprt *xprt); |
| 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 *, int max_reqs); |
| int bc_send(struct rpc_rqst *req); |
| |
| /* |
| * Determine if a shared backchannel is in use |
| */ |
| static inline int svc_is_backchannel(const struct svc_rqst *rqstp) |
| { |
| if (rqstp->rq_server->sv_bc_xprt) |
| return 1; |
| return 0; |
| } |
| static inline struct nfs4_sessionid *bc_xprt_sid(struct svc_rqst *rqstp) |
| { |
| if (svc_is_backchannel(rqstp)) |
| return (struct nfs4_sessionid *) |
| rqstp->rq_server->sv_bc_xprt->xpt_bc_sid; |
| return NULL; |
| } |
| |
| #else /* CONFIG_NFS_V4_1 */ |
| static inline int xprt_setup_backchannel(struct rpc_xprt *xprt, |
| unsigned int min_reqs) |
| { |
| return 0; |
| } |
| |
| static inline int svc_is_backchannel(const struct svc_rqst *rqstp) |
| { |
| return 0; |
| } |
| |
| static inline struct nfs4_sessionid *bc_xprt_sid(struct svc_rqst *rqstp) |
| { |
| return NULL; |
| } |
| |
| static inline void xprt_free_bc_request(struct rpc_rqst *req) |
| { |
| } |
| #endif /* CONFIG_NFS_V4_1 */ |
| #endif /* _LINUX_SUNRPC_BC_XPRT_H */ |
| |