NFSv4: Add encode/decode of the layoutreturn op in DELEGRETURN
Add XDR encoding for the layoutreturn op, and storage for the layoutreturn arguments to the DELEGRETURN compound. Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
This commit is contained in:
@@ -710,11 +710,13 @@ static int nfs4_stat_to_errno(int);
|
||||
#define NFS4_enc_delegreturn_sz (compound_encode_hdr_maxsz + \
|
||||
encode_sequence_maxsz + \
|
||||
encode_putfh_maxsz + \
|
||||
encode_layoutreturn_maxsz + \
|
||||
encode_delegreturn_maxsz + \
|
||||
encode_getattr_maxsz)
|
||||
#define NFS4_dec_delegreturn_sz (compound_decode_hdr_maxsz + \
|
||||
decode_sequence_maxsz + \
|
||||
decode_putfh_maxsz + \
|
||||
decode_layoutreturn_maxsz + \
|
||||
decode_delegreturn_maxsz + \
|
||||
decode_getattr_maxsz)
|
||||
#define NFS4_enc_getacl_sz (compound_encode_hdr_maxsz + \
|
||||
@@ -2683,6 +2685,8 @@ static void nfs4_xdr_enc_delegreturn(struct rpc_rqst *req,
|
||||
encode_compound_hdr(xdr, req, &hdr);
|
||||
encode_sequence(xdr, &args->seq_args, &hdr);
|
||||
encode_putfh(xdr, args->fhandle, &hdr);
|
||||
if (args->lr_args)
|
||||
encode_layoutreturn(xdr, args->lr_args, &hdr);
|
||||
encode_getfattr(xdr, args->bitmask, &hdr);
|
||||
encode_delegreturn(xdr, args->stateid, &hdr);
|
||||
encode_nops(&hdr);
|
||||
@@ -6942,6 +6946,12 @@ static int nfs4_xdr_dec_delegreturn(struct rpc_rqst *rqstp,
|
||||
status = decode_putfh(xdr);
|
||||
if (status != 0)
|
||||
goto out;
|
||||
if (res->lr_res) {
|
||||
status = decode_layoutreturn(xdr, res->lr_res);
|
||||
res->lr_ret = status;
|
||||
if (status)
|
||||
goto out;
|
||||
}
|
||||
status = decode_getfattr(xdr, res->fattr, res->server);
|
||||
if (status != 0)
|
||||
goto out;
|
||||
|
Reference in New Issue
Block a user