nfsd: unsupported nfs4 ops should fail with nfserr_opnotsupp
Benny Halevy [Wed, 2 Jul 2008 08:14:01 +0000 (11:14 +0300)]
nfserr_opnotsupp should be returned for unsupported nfs4 ops
rather than nfserr_op_illegal.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>

fs/nfsd/nfs4xdr.c

index de1fd9d..653951c 100644 (file)
@@ -991,6 +991,12 @@ nfsd4_decode_noop(struct nfsd4_compoundargs *argp, void *p)
        return nfs_ok;
 }
 
+static __be32
+nfsd4_decode_notsupp(struct nfsd4_compoundargs *argp, void *p)
+{
+       return nfserr_opnotsupp;
+}
+
 typedef __be32(*nfsd4_dec)(struct nfsd4_compoundargs *argp, void *);
 
 static nfsd4_dec nfsd4_dec_ops[] = {
@@ -998,6 +1004,7 @@ static nfsd4_dec nfsd4_dec_ops[] = {
        [OP_CLOSE]              (nfsd4_dec)nfsd4_decode_close,
        [OP_COMMIT]             (nfsd4_dec)nfsd4_decode_commit,
        [OP_CREATE]             (nfsd4_dec)nfsd4_decode_create,
+       [OP_DELEGPURGE]         (nfsd4_dec)nfsd4_decode_notsupp,
        [OP_DELEGRETURN]        (nfsd4_dec)nfsd4_decode_delegreturn,
        [OP_GETATTR]            (nfsd4_dec)nfsd4_decode_getattr,
        [OP_GETFH]              (nfsd4_dec)nfsd4_decode_noop,
@@ -1009,9 +1016,11 @@ static nfsd4_dec nfsd4_dec_ops[] = {
        [OP_LOOKUPP]            (nfsd4_dec)nfsd4_decode_noop,
        [OP_NVERIFY]            (nfsd4_dec)nfsd4_decode_verify,
        [OP_OPEN]               (nfsd4_dec)nfsd4_decode_open,
+       [OP_OPENATTR]           (nfsd4_dec)nfsd4_decode_notsupp,
        [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_PUTPUBFH]           (nfsd4_dec)nfsd4_decode_notsupp,
        [OP_PUTROOTFH]          (nfsd4_dec)nfsd4_decode_noop,
        [OP_READ]               (nfsd4_dec)nfsd4_decode_read,
        [OP_READDIR]            (nfsd4_dec)nfsd4_decode_readdir,