nfsd4: opdesc will be useful outside nfs4proc.c
Trivial cleanup, no change in behavior. Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
0020939f20
commit
f4f9ef4a1b
3 changed files with 14 additions and 14 deletions
|
@ -1578,7 +1578,7 @@ static __be32 nfs41_check_op_ordering(struct nfsd4_compoundargs *args)
|
||||||
return nfs_ok;
|
return nfs_ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline const struct nfsd4_operation *OPDESC(struct nfsd4_op *op)
|
const struct nfsd4_operation *OPDESC(struct nfsd4_op *op)
|
||||||
{
|
{
|
||||||
return &nfsd4_ops[op->opnum];
|
return &nfsd4_ops[op->opnum];
|
||||||
}
|
}
|
||||||
|
@ -1651,7 +1651,6 @@ nfsd4_proc_compound(struct svc_rqst *rqstp)
|
||||||
struct nfsd4_compoundargs *args = rqstp->rq_argp;
|
struct nfsd4_compoundargs *args = rqstp->rq_argp;
|
||||||
struct nfsd4_compoundres *resp = rqstp->rq_resp;
|
struct nfsd4_compoundres *resp = rqstp->rq_resp;
|
||||||
struct nfsd4_op *op;
|
struct nfsd4_op *op;
|
||||||
const struct nfsd4_operation *opdesc;
|
|
||||||
struct nfsd4_compound_state *cstate = &resp->cstate;
|
struct nfsd4_compound_state *cstate = &resp->cstate;
|
||||||
struct svc_fh *current_fh = &cstate->current_fh;
|
struct svc_fh *current_fh = &cstate->current_fh;
|
||||||
struct svc_fh *save_fh = &cstate->save_fh;
|
struct svc_fh *save_fh = &cstate->save_fh;
|
||||||
|
@ -1704,15 +1703,13 @@ nfsd4_proc_compound(struct svc_rqst *rqstp)
|
||||||
goto encode_op;
|
goto encode_op;
|
||||||
}
|
}
|
||||||
|
|
||||||
opdesc = OPDESC(op);
|
|
||||||
|
|
||||||
if (!current_fh->fh_dentry) {
|
if (!current_fh->fh_dentry) {
|
||||||
if (!(opdesc->op_flags & ALLOWED_WITHOUT_FH)) {
|
if (!(op->opdesc->op_flags & ALLOWED_WITHOUT_FH)) {
|
||||||
op->status = nfserr_nofilehandle;
|
op->status = nfserr_nofilehandle;
|
||||||
goto encode_op;
|
goto encode_op;
|
||||||
}
|
}
|
||||||
} else if (current_fh->fh_export->ex_fslocs.migrated &&
|
} else if (current_fh->fh_export->ex_fslocs.migrated &&
|
||||||
!(opdesc->op_flags & ALLOWED_ON_ABSENT_FS)) {
|
!(op->opdesc->op_flags & ALLOWED_ON_ABSENT_FS)) {
|
||||||
op->status = nfserr_moved;
|
op->status = nfserr_moved;
|
||||||
goto encode_op;
|
goto encode_op;
|
||||||
}
|
}
|
||||||
|
@ -1720,12 +1717,12 @@ nfsd4_proc_compound(struct svc_rqst *rqstp)
|
||||||
fh_clear_wcc(current_fh);
|
fh_clear_wcc(current_fh);
|
||||||
|
|
||||||
/* If op is non-idempotent */
|
/* If op is non-idempotent */
|
||||||
if (opdesc->op_flags & OP_MODIFIES_SOMETHING) {
|
if (op->opdesc->op_flags & OP_MODIFIES_SOMETHING) {
|
||||||
/*
|
/*
|
||||||
* Don't execute this op if we couldn't encode a
|
* Don't execute this op if we couldn't encode a
|
||||||
* succesful reply:
|
* succesful reply:
|
||||||
*/
|
*/
|
||||||
u32 plen = opdesc->op_rsize_bop(rqstp, op);
|
u32 plen = op->opdesc->op_rsize_bop(rqstp, op);
|
||||||
/*
|
/*
|
||||||
* Plus if there's another operation, make sure
|
* Plus if there's another operation, make sure
|
||||||
* we'll have space to at least encode an error:
|
* we'll have space to at least encode an error:
|
||||||
|
@ -1738,9 +1735,9 @@ nfsd4_proc_compound(struct svc_rqst *rqstp)
|
||||||
if (op->status)
|
if (op->status)
|
||||||
goto encode_op;
|
goto encode_op;
|
||||||
|
|
||||||
if (opdesc->op_get_currentstateid)
|
if (op->opdesc->op_get_currentstateid)
|
||||||
opdesc->op_get_currentstateid(cstate, &op->u);
|
op->opdesc->op_get_currentstateid(cstate, &op->u);
|
||||||
op->status = opdesc->op_func(rqstp, cstate, &op->u);
|
op->status = op->opdesc->op_func(rqstp, cstate, &op->u);
|
||||||
|
|
||||||
/* Only from SEQUENCE */
|
/* Only from SEQUENCE */
|
||||||
if (cstate->status == nfserr_replay_cache) {
|
if (cstate->status == nfserr_replay_cache) {
|
||||||
|
@ -1749,10 +1746,10 @@ nfsd4_proc_compound(struct svc_rqst *rqstp)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if (!op->status) {
|
if (!op->status) {
|
||||||
if (opdesc->op_set_currentstateid)
|
if (op->opdesc->op_set_currentstateid)
|
||||||
opdesc->op_set_currentstateid(cstate, &op->u);
|
op->opdesc->op_set_currentstateid(cstate, &op->u);
|
||||||
|
|
||||||
if (opdesc->op_flags & OP_CLEAR_STATEID)
|
if (op->opdesc->op_flags & OP_CLEAR_STATEID)
|
||||||
clear_current_stateid(cstate);
|
clear_current_stateid(cstate);
|
||||||
|
|
||||||
if (need_wrongsec_check(rqstp))
|
if (need_wrongsec_check(rqstp))
|
||||||
|
|
|
@ -1929,6 +1929,7 @@ nfsd4_decode_compound(struct nfsd4_compoundargs *argp)
|
||||||
op->opnum = OP_ILLEGAL;
|
op->opnum = OP_ILLEGAL;
|
||||||
op->status = nfserr_op_illegal;
|
op->status = nfserr_op_illegal;
|
||||||
}
|
}
|
||||||
|
op->opdesc = OPDESC(op);
|
||||||
/*
|
/*
|
||||||
* We'll try to cache the result in the DRC if any one
|
* We'll try to cache the result in the DRC if any one
|
||||||
* op in the compound wants to be cached:
|
* op in the compound wants to be cached:
|
||||||
|
|
|
@ -538,6 +538,7 @@ struct nfsd4_seek {
|
||||||
|
|
||||||
struct nfsd4_op {
|
struct nfsd4_op {
|
||||||
int opnum;
|
int opnum;
|
||||||
|
const struct nfsd4_operation * opdesc;
|
||||||
__be32 status;
|
__be32 status;
|
||||||
union nfsd4_op_u {
|
union nfsd4_op_u {
|
||||||
struct nfsd4_access access;
|
struct nfsd4_access access;
|
||||||
|
@ -661,6 +662,7 @@ static inline bool nfsd4_last_compound_op(struct svc_rqst *rqstp)
|
||||||
return argp->opcnt == resp->opcnt;
|
return argp->opcnt == resp->opcnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const struct nfsd4_operation *OPDESC(struct nfsd4_op *op);
|
||||||
int nfsd4_max_reply(struct svc_rqst *rqstp, struct nfsd4_op *op);
|
int nfsd4_max_reply(struct svc_rqst *rqstp, struct nfsd4_op *op);
|
||||||
void warn_on_nonidempotent_op(struct nfsd4_op *op);
|
void warn_on_nonidempotent_op(struct nfsd4_op *op);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue