mirror of https://gitee.com/openkylin/linux.git
nfs41 do not allocate unused back channel pages
Signed-off-by: Andy Adamson <andros@netapp.com> [Trond.Myklebust@netapp.com: moved definition of svc_is_backchannel() into include/linux/sunrpc/bc_xprt.h.] Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
9733f0d928
commit
ba17686f62
|
@ -38,12 +38,27 @@ int xprt_setup_backchannel(struct rpc_xprt *, unsigned int min_reqs);
|
||||||
void xprt_destroy_backchannel(struct rpc_xprt *, int max_reqs);
|
void xprt_destroy_backchannel(struct rpc_xprt *, int max_reqs);
|
||||||
void bc_release_request(struct rpc_task *);
|
void bc_release_request(struct rpc_task *);
|
||||||
int bc_send(struct rpc_rqst *req);
|
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->bc_xprt)
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
#else /* CONFIG_NFS_V4_1 */
|
#else /* CONFIG_NFS_V4_1 */
|
||||||
static inline int xprt_setup_backchannel(struct rpc_xprt *xprt,
|
static inline int xprt_setup_backchannel(struct rpc_xprt *xprt,
|
||||||
unsigned int min_reqs)
|
unsigned int min_reqs)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int svc_is_backchannel(const struct svc_rqst *rqstp)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
#endif /* CONFIG_NFS_V4_1 */
|
#endif /* CONFIG_NFS_V4_1 */
|
||||||
#endif /* _LINUX_SUNRPC_BC_XPRT_H */
|
#endif /* _LINUX_SUNRPC_BC_XPRT_H */
|
||||||
|
|
||||||
|
|
|
@ -506,6 +506,10 @@ svc_init_buffer(struct svc_rqst *rqstp, unsigned int size)
|
||||||
{
|
{
|
||||||
unsigned int pages, arghi;
|
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.
|
pages = size / PAGE_SIZE + 1; /* extra page as we hold both request and reply.
|
||||||
* We assume one is at most one page
|
* We assume one is at most one page
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue