SUNRPC: Add a helper for encoding opaque data inline
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
0e779aa703
commit
85e3dd44c5
@ -318,6 +318,31 @@ xdr_stream_encode_u64(struct xdr_stream *xdr, __u64 n)
|
||||
return len;
|
||||
}
|
||||
|
||||
/**
|
||||
* xdr_stream_encode_opaque_inline - Encode opaque xdr data
|
||||
* @xdr: pointer to xdr_stream
|
||||
* @ptr: pointer to void pointer
|
||||
* @len: size of object
|
||||
*
|
||||
* Return values:
|
||||
* On success, returns length in bytes of XDR buffer consumed
|
||||
* %-EMSGSIZE on XDR buffer overflow
|
||||
*/
|
||||
static inline ssize_t
|
||||
xdr_stream_encode_opaque_inline(struct xdr_stream *xdr, void **ptr, size_t len)
|
||||
{
|
||||
size_t count = sizeof(__u32) + xdr_align_size(len);
|
||||
__be32 *p = xdr_reserve_space(xdr, count);
|
||||
|
||||
if (unlikely(!p)) {
|
||||
*ptr = NULL;
|
||||
return -EMSGSIZE;
|
||||
}
|
||||
xdr_encode_opaque(p, NULL, len);
|
||||
*ptr = ++p;
|
||||
return count;
|
||||
}
|
||||
|
||||
/**
|
||||
* xdr_stream_encode_opaque_fixed - Encode fixed length opaque xdr data
|
||||
* @xdr: pointer to xdr_stream
|
||||
|
Loading…
Reference in New Issue
Block a user