Commit 3fdc5464 authored by Chuck Lever's avatar Chuck Lever

NFSD: Reduce amount of struct nfsd4_compoundargs that needs clearing

Have SunRPC clear everything except for the iops array. Then have
each NFSv4 XDR decoder clear it's own argument before decoding.

Now individual operations may have a large argument struct while not
penalizing the vast majority of operations with a small struct.

And, clearing the argument structure occurs as the argument fields
are initialized, enabling the CPU to do write combining on that
memory. In some cases, clearing is not even necessary because all
of the fields in the argument structure are initialized by the
decoder.
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent 103cc1fa
...@@ -3596,7 +3596,7 @@ static const struct svc_procedure nfsd_procedures4[2] = { ...@@ -3596,7 +3596,7 @@ static const struct svc_procedure nfsd_procedures4[2] = {
.pc_decode = nfs4svc_decode_compoundargs, .pc_decode = nfs4svc_decode_compoundargs,
.pc_encode = nfs4svc_encode_compoundres, .pc_encode = nfs4svc_encode_compoundres,
.pc_argsize = sizeof(struct nfsd4_compoundargs), .pc_argsize = sizeof(struct nfsd4_compoundargs),
.pc_argzero = sizeof(struct nfsd4_compoundargs), .pc_argzero = offsetof(struct nfsd4_compoundargs, iops),
.pc_ressize = sizeof(struct nfsd4_compoundres), .pc_ressize = sizeof(struct nfsd4_compoundres),
.pc_release = nfsd4_release_compoundargs, .pc_release = nfsd4_release_compoundargs,
.pc_cachetype = RC_NOCACHE, .pc_cachetype = RC_NOCACHE,
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment