NFSD: Clean up nfsd4_encode_entry4()
Reshape nfsd4_encode_entry4() to be more like the legacy dirent encoders, which were recently rewritten to use xdr_stream. Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
3fc5048cb3
commit
a1aee9aa35
@ -3772,7 +3772,6 @@ nfsd4_encode_entry4(void *ccdv, const char *name, int namlen,
|
||||
u32 name_and_cookie;
|
||||
int entry_bytes;
|
||||
__be32 nfserr = nfserr_toosmall;
|
||||
__be32 *p;
|
||||
|
||||
/* In nfsv4, "." and ".." never make it onto the wire.. */
|
||||
if (name && isdotent(name, namlen)) {
|
||||
@ -3783,17 +3782,15 @@ nfsd4_encode_entry4(void *ccdv, const char *name, int namlen,
|
||||
/* Encode the previous entry's cookie value */
|
||||
nfsd4_encode_entry4_nfs_cookie4(cd, offset);
|
||||
|
||||
p = xdr_reserve_space(xdr, 4);
|
||||
if (!p)
|
||||
if (xdr_stream_encode_item_present(xdr) != XDR_UNIT)
|
||||
goto fail;
|
||||
*p++ = xdr_one; /* mark entry present */
|
||||
cookie_offset = xdr->buf->len;
|
||||
p = xdr_reserve_space(xdr, 3*4 + namlen);
|
||||
if (!p)
|
||||
goto fail;
|
||||
p = xdr_encode_hyper(p, OFFSET_MAX); /* offset of next entry */
|
||||
p = xdr_encode_array(p, name, namlen); /* name length & name */
|
||||
|
||||
/* Reserve send buffer space for this entry's cookie value. */
|
||||
cookie_offset = xdr->buf->len;
|
||||
if (nfsd4_encode_nfs_cookie4(xdr, OFFSET_MAX) != nfs_ok)
|
||||
goto fail;
|
||||
if (nfsd4_encode_component4(xdr, name, namlen) != nfs_ok)
|
||||
goto fail;
|
||||
nfserr = nfsd4_encode_entry4_fattr(cd, name, namlen);
|
||||
switch (nfserr) {
|
||||
case nfs_ok:
|
||||
|
@ -120,6 +120,7 @@ nfsd4_encode_uint64_t(struct xdr_stream *xdr, u64 val)
|
||||
}
|
||||
|
||||
#define nfsd4_encode_changeid4(x, v) nfsd4_encode_uint64_t(x, v)
|
||||
#define nfsd4_encode_nfs_cookie4(x, v) nfsd4_encode_uint64_t(x, v)
|
||||
#define nfsd4_encode_length4(x, v) nfsd4_encode_uint64_t(x, v)
|
||||
#define nfsd4_encode_offset4(x, v) nfsd4_encode_uint64_t(x, v)
|
||||
|
||||
@ -174,6 +175,8 @@ nfsd4_encode_opaque(struct xdr_stream *xdr, const void *data, size_t size)
|
||||
return nfs_ok;
|
||||
}
|
||||
|
||||
#define nfsd4_encode_component4(x, d, s) nfsd4_encode_opaque(x, d, s)
|
||||
|
||||
struct nfsd4_compound_state {
|
||||
struct svc_fh current_fh;
|
||||
struct svc_fh save_fh;
|
||||
|
Loading…
x
Reference in New Issue
Block a user