mirror of
https://github.com/torvalds/linux.git
synced 2024-12-03 17:41:22 +00:00
nfs41: Adjust max cache response size value
For the CREATE_SESSION attribute ca_maxresponsesize_cached, calculate the value based on the rpc reply header size plus the maximum nfs compound reply size. Signed-off-by: Mike Sager <sager@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
5a51f13adf
commit
8e0d46e138
@ -4805,16 +4805,14 @@ static void nfs4_init_channel_attrs(struct nfs41_create_session_args *args)
|
|||||||
args->fc_attrs.headerpadsz = 0;
|
args->fc_attrs.headerpadsz = 0;
|
||||||
args->fc_attrs.max_rqst_sz = mxrqst_sz;
|
args->fc_attrs.max_rqst_sz = mxrqst_sz;
|
||||||
args->fc_attrs.max_resp_sz = mxresp_sz;
|
args->fc_attrs.max_resp_sz = mxresp_sz;
|
||||||
args->fc_attrs.max_resp_sz_cached = mxresp_sz;
|
|
||||||
args->fc_attrs.max_ops = NFS4_MAX_OPS;
|
args->fc_attrs.max_ops = NFS4_MAX_OPS;
|
||||||
args->fc_attrs.max_reqs = session->clp->cl_rpcclient->cl_xprt->max_reqs;
|
args->fc_attrs.max_reqs = session->clp->cl_rpcclient->cl_xprt->max_reqs;
|
||||||
|
|
||||||
dprintk("%s: Fore Channel : max_rqst_sz=%u max_resp_sz=%u "
|
dprintk("%s: Fore Channel : max_rqst_sz=%u max_resp_sz=%u "
|
||||||
"max_resp_sz_cached=%u max_ops=%u max_reqs=%u\n",
|
"max_ops=%u max_reqs=%u\n",
|
||||||
__func__,
|
__func__,
|
||||||
args->fc_attrs.max_rqst_sz, args->fc_attrs.max_resp_sz,
|
args->fc_attrs.max_rqst_sz, args->fc_attrs.max_resp_sz,
|
||||||
args->fc_attrs.max_resp_sz_cached, args->fc_attrs.max_ops,
|
args->fc_attrs.max_ops, args->fc_attrs.max_reqs);
|
||||||
args->fc_attrs.max_reqs);
|
|
||||||
|
|
||||||
/* Back channel attributes */
|
/* Back channel attributes */
|
||||||
args->bc_attrs.headerpadsz = 0;
|
args->bc_attrs.headerpadsz = 0;
|
||||||
|
@ -1578,6 +1578,14 @@ static void encode_create_session(struct xdr_stream *xdr,
|
|||||||
char machine_name[NFS4_MAX_MACHINE_NAME_LEN];
|
char machine_name[NFS4_MAX_MACHINE_NAME_LEN];
|
||||||
uint32_t len;
|
uint32_t len;
|
||||||
struct nfs_client *clp = args->client;
|
struct nfs_client *clp = args->client;
|
||||||
|
u32 max_resp_sz_cached;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Assumes OPEN is the biggest non-idempotent compound.
|
||||||
|
* 2 is the verifier.
|
||||||
|
*/
|
||||||
|
max_resp_sz_cached = (NFS4_dec_open_sz + RPC_REPHDRSIZE +
|
||||||
|
RPC_MAX_AUTH_SIZE + 2) * XDR_UNIT;
|
||||||
|
|
||||||
len = scnprintf(machine_name, sizeof(machine_name), "%s",
|
len = scnprintf(machine_name, sizeof(machine_name), "%s",
|
||||||
clp->cl_ipaddr);
|
clp->cl_ipaddr);
|
||||||
@ -1592,7 +1600,7 @@ static void encode_create_session(struct xdr_stream *xdr,
|
|||||||
*p++ = cpu_to_be32(args->fc_attrs.headerpadsz); /* header padding size */
|
*p++ = cpu_to_be32(args->fc_attrs.headerpadsz); /* header padding size */
|
||||||
*p++ = cpu_to_be32(args->fc_attrs.max_rqst_sz); /* max req size */
|
*p++ = cpu_to_be32(args->fc_attrs.max_rqst_sz); /* max req size */
|
||||||
*p++ = cpu_to_be32(args->fc_attrs.max_resp_sz); /* max resp size */
|
*p++ = cpu_to_be32(args->fc_attrs.max_resp_sz); /* max resp size */
|
||||||
*p++ = cpu_to_be32(args->fc_attrs.max_resp_sz_cached); /* Max resp sz cached */
|
*p++ = cpu_to_be32(max_resp_sz_cached); /* Max resp sz cached */
|
||||||
*p++ = cpu_to_be32(args->fc_attrs.max_ops); /* max operations */
|
*p++ = cpu_to_be32(args->fc_attrs.max_ops); /* max operations */
|
||||||
*p++ = cpu_to_be32(args->fc_attrs.max_reqs); /* max requests */
|
*p++ = cpu_to_be32(args->fc_attrs.max_reqs); /* max requests */
|
||||||
*p++ = cpu_to_be32(0); /* rdmachannel_attrs */
|
*p++ = cpu_to_be32(0); /* rdmachannel_attrs */
|
||||||
|
Loading…
Reference in New Issue
Block a user