forked from luck/tmp_suning_uos_patched
nfsd: clarify check_op_ordering
Document a couple things that confused me on a recent reading. Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
4a269efb6f
commit
7a04cfda7d
|
@ -1603,7 +1603,7 @@ static const char *nfsd4_op_name(unsigned opnum);
|
|||
*/
|
||||
static __be32 nfs41_check_op_ordering(struct nfsd4_compoundargs *args)
|
||||
{
|
||||
struct nfsd4_op *op = &args->ops[0];
|
||||
struct nfsd4_op *first_op = &args->ops[0];
|
||||
|
||||
/* These ordering requirements don't apply to NFSv4.0: */
|
||||
if (args->minorversion == 0)
|
||||
|
@ -1611,12 +1611,17 @@ static __be32 nfs41_check_op_ordering(struct nfsd4_compoundargs *args)
|
|||
/* This is weird, but OK, not our problem: */
|
||||
if (args->opcnt == 0)
|
||||
return nfs_ok;
|
||||
if (op->status == nfserr_op_illegal)
|
||||
if (first_op->status == nfserr_op_illegal)
|
||||
return nfs_ok;
|
||||
if (!(nfsd4_ops[op->opnum].op_flags & ALLOWED_AS_FIRST_OP))
|
||||
if (!(nfsd4_ops[first_op->opnum].op_flags & ALLOWED_AS_FIRST_OP))
|
||||
return nfserr_op_not_in_session;
|
||||
if (op->opnum == OP_SEQUENCE)
|
||||
if (first_op->opnum == OP_SEQUENCE)
|
||||
return nfs_ok;
|
||||
/*
|
||||
* So first_op is something allowed outside a session, like
|
||||
* EXCHANGE_ID; but then it has to be the only op in the
|
||||
* compound:
|
||||
*/
|
||||
if (args->opcnt != 1)
|
||||
return nfserr_not_only_op;
|
||||
return nfs_ok;
|
||||
|
|
Loading…
Reference in New Issue
Block a user