forked from Minki/linux
nfsd: tabulate nfs4 xdr decoding functions
In preparation for minorversion 1 Signed-off-by: Benny Halevy <bhalevy@panasas.com> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
This commit is contained in:
parent
30cff1ffff
commit
347e0ad9c9
@ -985,6 +985,51 @@ nfsd4_decode_release_lockowner(struct nfsd4_compoundargs *argp, struct nfsd4_rel
|
||||
DECODE_TAIL;
|
||||
}
|
||||
|
||||
static __be32
|
||||
nfsd4_decode_noop(struct nfsd4_compoundargs *argp, void *p)
|
||||
{
|
||||
return nfs_ok;
|
||||
}
|
||||
|
||||
typedef __be32(*nfsd4_dec)(struct nfsd4_compoundargs *argp, void *);
|
||||
|
||||
static nfsd4_dec nfsd4_dec_ops[] = {
|
||||
[OP_ACCESS] (nfsd4_dec)nfsd4_decode_access,
|
||||
[OP_CLOSE] (nfsd4_dec)nfsd4_decode_close,
|
||||
[OP_COMMIT] (nfsd4_dec)nfsd4_decode_commit,
|
||||
[OP_CREATE] (nfsd4_dec)nfsd4_decode_create,
|
||||
[OP_DELEGRETURN] (nfsd4_dec)nfsd4_decode_delegreturn,
|
||||
[OP_GETATTR] (nfsd4_dec)nfsd4_decode_getattr,
|
||||
[OP_GETFH] (nfsd4_dec)nfsd4_decode_noop,
|
||||
[OP_LINK] (nfsd4_dec)nfsd4_decode_link,
|
||||
[OP_LOCK] (nfsd4_dec)nfsd4_decode_lock,
|
||||
[OP_LOCKT] (nfsd4_dec)nfsd4_decode_lockt,
|
||||
[OP_LOCKU] (nfsd4_dec)nfsd4_decode_locku,
|
||||
[OP_LOOKUP] (nfsd4_dec)nfsd4_decode_lookup,
|
||||
[OP_LOOKUPP] (nfsd4_dec)nfsd4_decode_noop,
|
||||
[OP_NVERIFY] (nfsd4_dec)nfsd4_decode_verify,
|
||||
[OP_OPEN] (nfsd4_dec)nfsd4_decode_open,
|
||||
[OP_OPEN_CONFIRM] (nfsd4_dec)nfsd4_decode_open_confirm,
|
||||
[OP_OPEN_DOWNGRADE] (nfsd4_dec)nfsd4_decode_open_downgrade,
|
||||
[OP_PUTFH] (nfsd4_dec)nfsd4_decode_putfh,
|
||||
[OP_PUTROOTFH] (nfsd4_dec)nfsd4_decode_noop,
|
||||
[OP_READ] (nfsd4_dec)nfsd4_decode_read,
|
||||
[OP_READDIR] (nfsd4_dec)nfsd4_decode_readdir,
|
||||
[OP_READLINK] (nfsd4_dec)nfsd4_decode_noop,
|
||||
[OP_REMOVE] (nfsd4_dec)nfsd4_decode_remove,
|
||||
[OP_RENAME] (nfsd4_dec)nfsd4_decode_rename,
|
||||
[OP_RENEW] (nfsd4_dec)nfsd4_decode_renew,
|
||||
[OP_RESTOREFH] (nfsd4_dec)nfsd4_decode_noop,
|
||||
[OP_SAVEFH] (nfsd4_dec)nfsd4_decode_noop,
|
||||
[OP_SECINFO] (nfsd4_dec)nfsd4_decode_secinfo,
|
||||
[OP_SETATTR] (nfsd4_dec)nfsd4_decode_setattr,
|
||||
[OP_SETCLIENTID] (nfsd4_dec)nfsd4_decode_setclientid,
|
||||
[OP_SETCLIENTID_CONFIRM](nfsd4_dec)nfsd4_decode_setclientid_confirm,
|
||||
[OP_VERIFY] (nfsd4_dec)nfsd4_decode_verify,
|
||||
[OP_WRITE] (nfsd4_dec)nfsd4_decode_write,
|
||||
[OP_RELEASE_LOCKOWNER] (nfsd4_dec)nfsd4_decode_release_lockowner,
|
||||
};
|
||||
|
||||
static __be32
|
||||
nfsd4_decode_compound(struct nfsd4_compoundargs *argp)
|
||||
{
|
||||
@ -1059,113 +1104,11 @@ nfsd4_decode_compound(struct nfsd4_compoundargs *argp)
|
||||
}
|
||||
op->opnum = ntohl(*argp->p++);
|
||||
|
||||
switch (op->opnum) {
|
||||
case OP_ACCESS:
|
||||
op->status = nfsd4_decode_access(argp, &op->u.access);
|
||||
break;
|
||||
case OP_CLOSE:
|
||||
op->status = nfsd4_decode_close(argp, &op->u.close);
|
||||
break;
|
||||
case OP_COMMIT:
|
||||
op->status = nfsd4_decode_commit(argp, &op->u.commit);
|
||||
break;
|
||||
case OP_CREATE:
|
||||
op->status = nfsd4_decode_create(argp, &op->u.create);
|
||||
break;
|
||||
case OP_DELEGRETURN:
|
||||
op->status = nfsd4_decode_delegreturn(argp, &op->u.delegreturn);
|
||||
break;
|
||||
case OP_GETATTR:
|
||||
op->status = nfsd4_decode_getattr(argp, &op->u.getattr);
|
||||
break;
|
||||
case OP_GETFH:
|
||||
op->status = nfs_ok;
|
||||
break;
|
||||
case OP_LINK:
|
||||
op->status = nfsd4_decode_link(argp, &op->u.link);
|
||||
break;
|
||||
case OP_LOCK:
|
||||
op->status = nfsd4_decode_lock(argp, &op->u.lock);
|
||||
break;
|
||||
case OP_LOCKT:
|
||||
op->status = nfsd4_decode_lockt(argp, &op->u.lockt);
|
||||
break;
|
||||
case OP_LOCKU:
|
||||
op->status = nfsd4_decode_locku(argp, &op->u.locku);
|
||||
break;
|
||||
case OP_LOOKUP:
|
||||
op->status = nfsd4_decode_lookup(argp, &op->u.lookup);
|
||||
break;
|
||||
case OP_LOOKUPP:
|
||||
op->status = nfs_ok;
|
||||
break;
|
||||
case OP_NVERIFY:
|
||||
op->status = nfsd4_decode_verify(argp, &op->u.nverify);
|
||||
break;
|
||||
case OP_OPEN:
|
||||
op->status = nfsd4_decode_open(argp, &op->u.open);
|
||||
break;
|
||||
case OP_OPEN_CONFIRM:
|
||||
op->status = nfsd4_decode_open_confirm(argp, &op->u.open_confirm);
|
||||
break;
|
||||
case OP_OPEN_DOWNGRADE:
|
||||
op->status = nfsd4_decode_open_downgrade(argp, &op->u.open_downgrade);
|
||||
break;
|
||||
case OP_PUTFH:
|
||||
op->status = nfsd4_decode_putfh(argp, &op->u.putfh);
|
||||
break;
|
||||
case OP_PUTROOTFH:
|
||||
op->status = nfs_ok;
|
||||
break;
|
||||
case OP_READ:
|
||||
op->status = nfsd4_decode_read(argp, &op->u.read);
|
||||
break;
|
||||
case OP_READDIR:
|
||||
op->status = nfsd4_decode_readdir(argp, &op->u.readdir);
|
||||
break;
|
||||
case OP_READLINK:
|
||||
op->status = nfs_ok;
|
||||
break;
|
||||
case OP_REMOVE:
|
||||
op->status = nfsd4_decode_remove(argp, &op->u.remove);
|
||||
break;
|
||||
case OP_RENAME:
|
||||
op->status = nfsd4_decode_rename(argp, &op->u.rename);
|
||||
break;
|
||||
case OP_RESTOREFH:
|
||||
op->status = nfs_ok;
|
||||
break;
|
||||
case OP_RENEW:
|
||||
op->status = nfsd4_decode_renew(argp, &op->u.renew);
|
||||
break;
|
||||
case OP_SAVEFH:
|
||||
op->status = nfs_ok;
|
||||
break;
|
||||
case OP_SECINFO:
|
||||
op->status = nfsd4_decode_secinfo(argp, &op->u.secinfo);
|
||||
break;
|
||||
case OP_SETATTR:
|
||||
op->status = nfsd4_decode_setattr(argp, &op->u.setattr);
|
||||
break;
|
||||
case OP_SETCLIENTID:
|
||||
op->status = nfsd4_decode_setclientid(argp, &op->u.setclientid);
|
||||
break;
|
||||
case OP_SETCLIENTID_CONFIRM:
|
||||
op->status = nfsd4_decode_setclientid_confirm(argp, &op->u.setclientid_confirm);
|
||||
break;
|
||||
case OP_VERIFY:
|
||||
op->status = nfsd4_decode_verify(argp, &op->u.verify);
|
||||
break;
|
||||
case OP_WRITE:
|
||||
op->status = nfsd4_decode_write(argp, &op->u.write);
|
||||
break;
|
||||
case OP_RELEASE_LOCKOWNER:
|
||||
op->status = nfsd4_decode_release_lockowner(argp, &op->u.release_lockowner);
|
||||
break;
|
||||
default:
|
||||
if (op->opnum >= OP_ACCESS && op->opnum < ARRAY_SIZE(nfsd4_dec_ops))
|
||||
op->status = nfsd4_dec_ops[op->opnum](argp, &op->u);
|
||||
else {
|
||||
op->opnum = OP_ILLEGAL;
|
||||
op->status = nfserr_op_illegal;
|
||||
break;
|
||||
}
|
||||
|
||||
if (op->status) {
|
||||
|
Loading…
Reference in New Issue
Block a user