NFS COPY xdr handle async reply
If server returns async reply, it must include a callback stateid, wr_callback_id in the write_response4. Signed-off-by: Olga Kornievskaia <kolga@netapp.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
cb95deea0b
commit
67aa7444c4
|
@ -389,21 +389,23 @@ static int decode_write_response(struct xdr_stream *xdr,
|
||||||
struct nfs42_write_res *res)
|
struct nfs42_write_res *res)
|
||||||
{
|
{
|
||||||
__be32 *p;
|
__be32 *p;
|
||||||
|
int status, count;
|
||||||
|
|
||||||
p = xdr_inline_decode(xdr, 4 + 8 + 4);
|
p = xdr_inline_decode(xdr, 4);
|
||||||
if (unlikely(!p))
|
if (unlikely(!p))
|
||||||
goto out_overflow;
|
goto out_overflow;
|
||||||
|
count = be32_to_cpup(p);
|
||||||
/*
|
if (count > 1)
|
||||||
* We never use asynchronous mode, so warn if a server returns
|
|
||||||
* a stateid.
|
|
||||||
*/
|
|
||||||
if (unlikely(*p != 0)) {
|
|
||||||
pr_err_once("%s: server has set unrequested "
|
|
||||||
"asynchronous mode\n", __func__);
|
|
||||||
return -EREMOTEIO;
|
return -EREMOTEIO;
|
||||||
|
else if (count == 1) {
|
||||||
|
status = decode_opaque_fixed(xdr, &res->stateid,
|
||||||
|
NFS4_STATEID_SIZE);
|
||||||
|
if (unlikely(status))
|
||||||
|
goto out_overflow;
|
||||||
}
|
}
|
||||||
p++;
|
p = xdr_inline_decode(xdr, 8 + 4);
|
||||||
|
if (unlikely(!p))
|
||||||
|
goto out_overflow;
|
||||||
p = xdr_decode_hyper(p, &res->count);
|
p = xdr_decode_hyper(p, &res->count);
|
||||||
res->verifier.committed = be32_to_cpup(p);
|
res->verifier.committed = be32_to_cpup(p);
|
||||||
return decode_verifier(xdr, &res->verifier.verifier);
|
return decode_verifier(xdr, &res->verifier.verifier);
|
||||||
|
|
|
@ -1391,6 +1391,7 @@ struct nfs42_copy_args {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct nfs42_write_res {
|
struct nfs42_write_res {
|
||||||
|
nfs4_stateid stateid;
|
||||||
u64 count;
|
u64 count;
|
||||||
struct nfs_writeverf verifier;
|
struct nfs_writeverf verifier;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue