nfsd: nfs4xdr encode_stateid helper function
Signed-off-by: Benny Halevy <bhalevy@panasas.com> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
This commit is contained in:
parent
5033b77a93
commit
e2f282b9f0
1 changed files with 32 additions and 44 deletions
|
@ -1950,6 +1950,17 @@ nfsd4_encode_dirent(void *ccdv, const char *name, int namlen,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
static void
|
||||
nfsd4_encode_stateid(struct nfsd4_compoundres *resp, stateid_t *sid)
|
||||
{
|
||||
ENCODE_HEAD;
|
||||
|
||||
RESERVE_SPACE(sizeof(stateid_t));
|
||||
WRITE32(sid->si_generation);
|
||||
WRITEMEM(&sid->si_opaque, sizeof(stateid_opaque_t));
|
||||
ADJUST_ARGS();
|
||||
}
|
||||
|
||||
static __be32
|
||||
nfsd4_encode_access(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_access *access)
|
||||
{
|
||||
|
@ -1969,12 +1980,9 @@ nfsd4_encode_close(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_c
|
|||
{
|
||||
ENCODE_SEQID_OP_HEAD;
|
||||
|
||||
if (!nfserr) {
|
||||
RESERVE_SPACE(sizeof(stateid_t));
|
||||
WRITE32(close->cl_stateid.si_generation);
|
||||
WRITEMEM(&close->cl_stateid.si_opaque, sizeof(stateid_opaque_t));
|
||||
ADJUST_ARGS();
|
||||
}
|
||||
if (!nfserr)
|
||||
nfsd4_encode_stateid(resp, &close->cl_stateid);
|
||||
|
||||
ENCODE_SEQID_OP_TAIL(close->cl_stateowner);
|
||||
return nfserr;
|
||||
}
|
||||
|
@ -2074,12 +2082,9 @@ nfsd4_encode_lock(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_lo
|
|||
{
|
||||
ENCODE_SEQID_OP_HEAD;
|
||||
|
||||
if (!nfserr) {
|
||||
RESERVE_SPACE(4 + sizeof(stateid_t));
|
||||
WRITE32(lock->lk_resp_stateid.si_generation);
|
||||
WRITEMEM(&lock->lk_resp_stateid.si_opaque, sizeof(stateid_opaque_t));
|
||||
ADJUST_ARGS();
|
||||
} else if (nfserr == nfserr_denied)
|
||||
if (!nfserr)
|
||||
nfsd4_encode_stateid(resp, &lock->lk_resp_stateid);
|
||||
else if (nfserr == nfserr_denied)
|
||||
nfsd4_encode_lock_denied(resp, &lock->lk_denied);
|
||||
|
||||
ENCODE_SEQID_OP_TAIL(lock->lk_replay_owner);
|
||||
|
@ -2099,13 +2104,9 @@ nfsd4_encode_locku(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_l
|
|||
{
|
||||
ENCODE_SEQID_OP_HEAD;
|
||||
|
||||
if (!nfserr) {
|
||||
RESERVE_SPACE(sizeof(stateid_t));
|
||||
WRITE32(locku->lu_stateid.si_generation);
|
||||
WRITEMEM(&locku->lu_stateid.si_opaque, sizeof(stateid_opaque_t));
|
||||
ADJUST_ARGS();
|
||||
}
|
||||
|
||||
if (!nfserr)
|
||||
nfsd4_encode_stateid(resp, &locku->lu_stateid);
|
||||
|
||||
ENCODE_SEQID_OP_TAIL(locku->lu_stateowner);
|
||||
return nfserr;
|
||||
}
|
||||
|
@ -2133,9 +2134,8 @@ nfsd4_encode_open(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_op
|
|||
if (nfserr)
|
||||
goto out;
|
||||
|
||||
RESERVE_SPACE(40 + sizeof(stateid_t));
|
||||
WRITE32(open->op_stateid.si_generation);
|
||||
WRITEMEM(&open->op_stateid.si_opaque, sizeof(stateid_opaque_t));
|
||||
nfsd4_encode_stateid(resp, &open->op_stateid);
|
||||
RESERVE_SPACE(40);
|
||||
WRITECINFO(open->op_cinfo);
|
||||
WRITE32(open->op_rflags);
|
||||
WRITE32(2);
|
||||
|
@ -2148,10 +2148,8 @@ nfsd4_encode_open(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_op
|
|||
case NFS4_OPEN_DELEGATE_NONE:
|
||||
break;
|
||||
case NFS4_OPEN_DELEGATE_READ:
|
||||
RESERVE_SPACE(20 + sizeof(stateid_t));
|
||||
WRITE32(open->op_delegate_stateid.si_generation);
|
||||
WRITEMEM(&open->op_delegate_stateid.si_opaque,
|
||||
sizeof(stateid_opaque_t));
|
||||
nfsd4_encode_stateid(resp, &open->op_delegate_stateid);
|
||||
RESERVE_SPACE(20);
|
||||
WRITE32(open->op_recall);
|
||||
|
||||
/*
|
||||
|
@ -2164,10 +2162,8 @@ nfsd4_encode_open(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_op
|
|||
ADJUST_ARGS();
|
||||
break;
|
||||
case NFS4_OPEN_DELEGATE_WRITE:
|
||||
RESERVE_SPACE(32 + sizeof(stateid_t));
|
||||
WRITE32(open->op_delegate_stateid.si_generation);
|
||||
WRITEMEM(&open->op_delegate_stateid.si_opaque,
|
||||
sizeof(stateid_opaque_t));
|
||||
nfsd4_encode_stateid(resp, &open->op_delegate_stateid);
|
||||
RESERVE_SPACE(32);
|
||||
WRITE32(0);
|
||||
|
||||
/*
|
||||
|
@ -2199,13 +2195,9 @@ static __be32
|
|||
nfsd4_encode_open_confirm(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_open_confirm *oc)
|
||||
{
|
||||
ENCODE_SEQID_OP_HEAD;
|
||||
|
||||
if (!nfserr) {
|
||||
RESERVE_SPACE(sizeof(stateid_t));
|
||||
WRITE32(oc->oc_resp_stateid.si_generation);
|
||||
WRITEMEM(&oc->oc_resp_stateid.si_opaque, sizeof(stateid_opaque_t));
|
||||
ADJUST_ARGS();
|
||||
}
|
||||
|
||||
if (!nfserr)
|
||||
nfsd4_encode_stateid(resp, &oc->oc_resp_stateid);
|
||||
|
||||
ENCODE_SEQID_OP_TAIL(oc->oc_stateowner);
|
||||
return nfserr;
|
||||
|
@ -2215,13 +2207,9 @@ static __be32
|
|||
nfsd4_encode_open_downgrade(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_open_downgrade *od)
|
||||
{
|
||||
ENCODE_SEQID_OP_HEAD;
|
||||
|
||||
if (!nfserr) {
|
||||
RESERVE_SPACE(sizeof(stateid_t));
|
||||
WRITE32(od->od_stateid.si_generation);
|
||||
WRITEMEM(&od->od_stateid.si_opaque, sizeof(stateid_opaque_t));
|
||||
ADJUST_ARGS();
|
||||
}
|
||||
|
||||
if (!nfserr)
|
||||
nfsd4_encode_stateid(resp, &od->od_stateid);
|
||||
|
||||
ENCODE_SEQID_OP_TAIL(od->od_stateowner);
|
||||
return nfserr;
|
||||
|
|
Loading…
Reference in a new issue