提交 8217d146 编写于 作者: A Anna Schumaker 提交者: J. Bruce Fields

NFSD: Add support for NFS v4.2 operation checking

The server does allow NFS over v4.2, even if it doesn't add any new
operations yet.

I also switch to using constants to represent the last operation for
each minor version since this makes the code cleaner and easier to
understand at a quick glance.
Signed-off-by: NAnna Schumaker <bjschuma@netapp.com>
Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
上级 e50a26dc
...@@ -1585,11 +1585,13 @@ static nfsd4_dec nfsd4_dec_ops[] = { ...@@ -1585,11 +1585,13 @@ static nfsd4_dec nfsd4_dec_ops[] = {
static inline bool static inline bool
nfsd4_opnum_in_range(struct nfsd4_compoundargs *argp, struct nfsd4_op *op) nfsd4_opnum_in_range(struct nfsd4_compoundargs *argp, struct nfsd4_op *op)
{ {
if (op->opnum < FIRST_NFS4_OP || op->opnum > LAST_NFS4_OP) if (op->opnum < FIRST_NFS4_OP)
return false; return false;
else if (argp->minorversion == 0 && op->opnum > OP_RELEASE_LOCKOWNER) else if (argp->minorversion == 0 && op->opnum > LAST_NFS40_OP)
return false; return false;
else if (argp->minorversion == 1 && op->opnum > OP_RECLAIM_COMPLETE) else if (argp->minorversion == 1 && op->opnum > LAST_NFS41_OP)
return false;
else if (argp->minorversion == 2 && op->opnum > LAST_NFS42_OP)
return false; return false;
return true; return true;
} }
......
...@@ -118,6 +118,9 @@ Needs to be updated if more operations are defined in future.*/ ...@@ -118,6 +118,9 @@ Needs to be updated if more operations are defined in future.*/
#define FIRST_NFS4_OP OP_ACCESS #define FIRST_NFS4_OP OP_ACCESS
#define LAST_NFS4_OP OP_RECLAIM_COMPLETE #define LAST_NFS4_OP OP_RECLAIM_COMPLETE
#define LAST_NFS40_OP OP_RELEASE_LOCKOWNER
#define LAST_NFS41_OP OP_RECLAIM_COMPLETE
#define LAST_NFS42_OP OP_RECLAIM_COMPLETE
enum nfsstat4 { enum nfsstat4 {
NFS4_OK = 0, NFS4_OK = 0,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册