Skip to content

Commit 66a21db

Browse files
committed
NFSD: Replace encode_cinfo()
De-duplicate "reserve_space; encode_cinfo". Signed-off-by: Chuck Lever <[email protected]>
1 parent adaa7a5 commit 66a21db

File tree

1 file changed

+24
-48
lines changed

1 file changed

+24
-48
lines changed

fs/nfsd/nfs4xdr.c

Lines changed: 24 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -2566,12 +2566,16 @@ static __be32 *encode_time_delta(__be32 *p, struct inode *inode)
25662566
return p;
25672567
}
25682568

2569-
static __be32 *encode_cinfo(__be32 *p, struct nfsd4_change_info *c)
2569+
static __be32
2570+
nfsd4_encode_change_info4(struct xdr_stream *xdr, struct nfsd4_change_info *c)
25702571
{
2571-
*p++ = cpu_to_be32(c->atomic);
2572-
p = xdr_encode_hyper(p, c->before_change);
2573-
p = xdr_encode_hyper(p, c->after_change);
2574-
return p;
2572+
if (xdr_stream_encode_bool(xdr, c->atomic) < 0)
2573+
return nfserr_resource;
2574+
if (xdr_stream_encode_u64(xdr, c->before_change) < 0)
2575+
return nfserr_resource;
2576+
if (xdr_stream_encode_u64(xdr, c->after_change) < 0)
2577+
return nfserr_resource;
2578+
return nfs_ok;
25752579
}
25762580

25772581
/* Encode as an array of strings the string given with components
@@ -3786,12 +3790,10 @@ nfsd4_encode_create(struct nfsd4_compoundres *resp, __be32 nfserr,
37863790
{
37873791
struct nfsd4_create *create = &u->create;
37883792
struct xdr_stream *xdr = resp->xdr;
3789-
__be32 *p;
37903793

3791-
p = xdr_reserve_space(xdr, 20);
3792-
if (!p)
3793-
return nfserr_resource;
3794-
encode_cinfo(p, &create->cr_cinfo);
3794+
nfserr = nfsd4_encode_change_info4(xdr, &create->cr_cinfo);
3795+
if (nfserr)
3796+
return nfserr;
37953797
return nfsd4_encode_bitmap(xdr, create->cr_bmval[0],
37963798
create->cr_bmval[1], create->cr_bmval[2]);
37973799
}
@@ -3909,13 +3911,8 @@ nfsd4_encode_link(struct nfsd4_compoundres *resp, __be32 nfserr,
39093911
{
39103912
struct nfsd4_link *link = &u->link;
39113913
struct xdr_stream *xdr = resp->xdr;
3912-
__be32 *p;
39133914

3914-
p = xdr_reserve_space(xdr, 20);
3915-
if (!p)
3916-
return nfserr_resource;
3917-
p = encode_cinfo(p, &link->li_cinfo);
3918-
return 0;
3915+
return nfsd4_encode_change_info4(xdr, &link->li_cinfo);
39193916
}
39203917

39213918

@@ -3930,11 +3927,11 @@ nfsd4_encode_open(struct nfsd4_compoundres *resp, __be32 nfserr,
39303927
nfserr = nfsd4_encode_stateid(xdr, &open->op_stateid);
39313928
if (nfserr)
39323929
return nfserr;
3933-
p = xdr_reserve_space(xdr, 24);
3934-
if (!p)
3930+
nfserr = nfsd4_encode_change_info4(xdr, &open->op_cinfo);
3931+
if (nfserr)
3932+
return nfserr;
3933+
if (xdr_stream_encode_u32(xdr, open->op_rflags) < 0)
39353934
return nfserr_resource;
3936-
p = encode_cinfo(p, &open->op_cinfo);
3937-
*p++ = cpu_to_be32(open->op_rflags);
39383935

39393936
nfserr = nfsd4_encode_bitmap(xdr, open->op_bmval[0], open->op_bmval[1],
39403937
open->op_bmval[2]);
@@ -4310,13 +4307,8 @@ nfsd4_encode_remove(struct nfsd4_compoundres *resp, __be32 nfserr,
43104307
{
43114308
struct nfsd4_remove *remove = &u->remove;
43124309
struct xdr_stream *xdr = resp->xdr;
4313-
__be32 *p;
43144310

4315-
p = xdr_reserve_space(xdr, 20);
4316-
if (!p)
4317-
return nfserr_resource;
4318-
p = encode_cinfo(p, &remove->rm_cinfo);
4319-
return 0;
4311+
return nfsd4_encode_change_info4(xdr, &remove->rm_cinfo);
43204312
}
43214313

43224314
static __be32
@@ -4325,14 +4317,11 @@ nfsd4_encode_rename(struct nfsd4_compoundres *resp, __be32 nfserr,
43254317
{
43264318
struct nfsd4_rename *rename = &u->rename;
43274319
struct xdr_stream *xdr = resp->xdr;
4328-
__be32 *p;
43294320

4330-
p = xdr_reserve_space(xdr, 40);
4331-
if (!p)
4332-
return nfserr_resource;
4333-
p = encode_cinfo(p, &rename->rn_sinfo);
4334-
p = encode_cinfo(p, &rename->rn_tinfo);
4335-
return 0;
4321+
nfserr = nfsd4_encode_change_info4(xdr, &rename->rn_sinfo);
4322+
if (nfserr)
4323+
return nfserr;
4324+
return nfsd4_encode_change_info4(xdr, &rename->rn_tinfo);
43364325
}
43374326

43384327
static __be32
@@ -5102,15 +5091,8 @@ nfsd4_encode_setxattr(struct nfsd4_compoundres *resp, __be32 nfserr,
51025091
{
51035092
struct nfsd4_setxattr *setxattr = &u->setxattr;
51045093
struct xdr_stream *xdr = resp->xdr;
5105-
__be32 *p;
5106-
5107-
p = xdr_reserve_space(xdr, 20);
5108-
if (!p)
5109-
return nfserr_resource;
51105094

5111-
encode_cinfo(p, &setxattr->setxa_cinfo);
5112-
5113-
return 0;
5095+
return nfsd4_encode_change_info4(xdr, &setxattr->setxa_cinfo);
51145096
}
51155097

51165098
/*
@@ -5256,14 +5238,8 @@ nfsd4_encode_removexattr(struct nfsd4_compoundres *resp, __be32 nfserr,
52565238
{
52575239
struct nfsd4_removexattr *removexattr = &u->removexattr;
52585240
struct xdr_stream *xdr = resp->xdr;
5259-
__be32 *p;
52605241

5261-
p = xdr_reserve_space(xdr, 20);
5262-
if (!p)
5263-
return nfserr_resource;
5264-
5265-
p = encode_cinfo(p, &removexattr->rmxa_cinfo);
5266-
return 0;
5242+
return nfsd4_encode_change_info4(xdr, &removexattr->rmxa_cinfo);
52675243
}
52685244

52695245
typedef __be32(*nfsd4_enc)(struct nfsd4_compoundres *, __be32, union nfsd4_op_u *u);

0 commit comments

Comments
 (0)