From: Andy Adamson <andros@xxxxxxxxxx> Signed-off-by: Andy Adamson <andros@xxxxxxxxxx> --- include/linux/sunrpc/svc.h | 12 ++++++++++++ net/sunrpc/svc.c | 4 ++++ 2 files changed, 16 insertions(+), 0 deletions(-) diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h index 5a3085b..02329f4 100644 --- a/include/linux/sunrpc/svc.h +++ b/include/linux/sunrpc/svc.h @@ -281,6 +281,18 @@ struct svc_rqst { }; /* + * Determine if a shared backchannel is in use + */ +static inline int svc_is_backchannel(const struct svc_rqst *rqstp) +{ +#ifdef CONFIG_NFS_V4_1 + if (rqstp->rq_server->bc_xprt) + return 1; +#endif /* CONFIG_NFS_V4_1 */ + return 0; +} + +/* * Rigorous type checking on sockaddr type conversions */ static inline struct sockaddr_in *svc_addr_in(const struct svc_rqst *rqst) diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c index 538ca43..6dcf8c9 100644 --- a/net/sunrpc/svc.c +++ b/net/sunrpc/svc.c @@ -506,6 +506,10 @@ svc_init_buffer(struct svc_rqst *rqstp, unsigned int size) { unsigned int pages, arghi; + /* bc_xprt uses fore channel allocated buffers */ + if (svc_is_backchannel(rqstp)) + return 1; + pages = size / PAGE_SIZE + 1; /* extra page as we hold both request and reply. * We assume one is at most one page */ -- 1.6.6 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html