NFSD: Add generic v4.2 infrastructure
authorAnna Schumaker <Anna.Schumaker@netapp.com>
Fri, 26 Sep 2014 17:58:26 +0000 (13:58 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Mon, 29 Sep 2014 18:35:19 +0000 (14:35 -0400)
It's cleaner to introduce everything at once and have the server reply
with "not supported" than it would be to introduce extra operations when
implementing a specific one in the middle of the list.

Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4xdr.c
include/linux/nfs4.h

index e771a1a7c6f12c3b918c9201e51c4b3edefc5a9b..0311baebd7d39f834f7b8fb892e215f1c6f71c97 100644 (file)
@@ -1586,6 +1586,20 @@ static nfsd4_dec nfsd4_dec_ops[] = {
        [OP_WANT_DELEGATION]    = (nfsd4_dec)nfsd4_decode_notsupp,
        [OP_DESTROY_CLIENTID]   = (nfsd4_dec)nfsd4_decode_destroy_clientid,
        [OP_RECLAIM_COMPLETE]   = (nfsd4_dec)nfsd4_decode_reclaim_complete,
+
+       /* new operations for NFSv4.2 */
+       [OP_ALLOCATE]           = (nfsd4_dec)nfsd4_decode_notsupp,
+       [OP_COPY]               = (nfsd4_dec)nfsd4_decode_notsupp,
+       [OP_COPY_NOTIFY]        = (nfsd4_dec)nfsd4_decode_notsupp,
+       [OP_DEALLOCATE]         = (nfsd4_dec)nfsd4_decode_notsupp,
+       [OP_IO_ADVISE]          = (nfsd4_dec)nfsd4_decode_notsupp,
+       [OP_LAYOUTERROR]        = (nfsd4_dec)nfsd4_decode_notsupp,
+       [OP_LAYOUTSTATS]        = (nfsd4_dec)nfsd4_decode_notsupp,
+       [OP_OFFLOAD_CANCEL]     = (nfsd4_dec)nfsd4_decode_notsupp,
+       [OP_OFFLOAD_STATUS]     = (nfsd4_dec)nfsd4_decode_notsupp,
+       [OP_READ_PLUS]          = (nfsd4_dec)nfsd4_decode_notsupp,
+       [OP_SEEK]               = (nfsd4_dec)nfsd4_decode_notsupp,
+       [OP_WRITE_SAME]         = (nfsd4_dec)nfsd4_decode_notsupp,
 };
 
 static inline bool
@@ -3823,6 +3837,20 @@ static nfsd4_enc nfsd4_enc_ops[] = {
        [OP_WANT_DELEGATION]    = (nfsd4_enc)nfsd4_encode_noop,
        [OP_DESTROY_CLIENTID]   = (nfsd4_enc)nfsd4_encode_noop,
        [OP_RECLAIM_COMPLETE]   = (nfsd4_enc)nfsd4_encode_noop,
+
+       /* NFSv4.2 operations */
+       [OP_ALLOCATE]           = (nfsd4_enc)nfsd4_encode_noop,
+       [OP_COPY]               = (nfsd4_enc)nfsd4_encode_noop,
+       [OP_COPY_NOTIFY]        = (nfsd4_enc)nfsd4_encode_noop,
+       [OP_DEALLOCATE]         = (nfsd4_enc)nfsd4_encode_noop,
+       [OP_IO_ADVISE]          = (nfsd4_enc)nfsd4_encode_noop,
+       [OP_LAYOUTERROR]        = (nfsd4_enc)nfsd4_encode_noop,
+       [OP_LAYOUTSTATS]        = (nfsd4_enc)nfsd4_encode_noop,
+       [OP_OFFLOAD_CANCEL]     = (nfsd4_enc)nfsd4_encode_noop,
+       [OP_OFFLOAD_STATUS]     = (nfsd4_enc)nfsd4_encode_noop,
+       [OP_READ_PLUS]          = (nfsd4_enc)nfsd4_encode_noop,
+       [OP_SEEK]               = (nfsd4_enc)nfsd4_encode_noop,
+       [OP_WRITE_SAME]         = (nfsd4_enc)nfsd4_encode_noop,
 };
 
 /*
index 79b2a0f5c318a9510d91babd41fb2d1673552708..cf38224c4fa0e326e1e7c51679bba5a0eed07aa3 100644 (file)
@@ -110,6 +110,20 @@ enum nfs_opnum4 {
        OP_DESTROY_CLIENTID = 57,
        OP_RECLAIM_COMPLETE = 58,
 
+       /* nfs42 */
+       OP_ALLOCATE = 59,
+       OP_COPY = 60,
+       OP_COPY_NOTIFY = 61,
+       OP_DEALLOCATE = 62,
+       OP_IO_ADVISE = 63,
+       OP_LAYOUTERROR = 64,
+       OP_LAYOUTSTATS = 65,
+       OP_OFFLOAD_CANCEL = 66,
+       OP_OFFLOAD_STATUS = 67,
+       OP_READ_PLUS = 68,
+       OP_SEEK = 69,
+       OP_WRITE_SAME = 70,
+
        OP_ILLEGAL = 10044,
 };
 
@@ -117,10 +131,10 @@ enum nfs_opnum4 {
 Needs to be updated if more operations are defined in future.*/
 
 #define FIRST_NFS4_OP  OP_ACCESS
-#define LAST_NFS4_OP   OP_RECLAIM_COMPLETE
+#define LAST_NFS4_OP   OP_WRITE_SAME
 #define LAST_NFS40_OP  OP_RELEASE_LOCKOWNER
 #define LAST_NFS41_OP  OP_RECLAIM_COMPLETE
-#define LAST_NFS42_OP  OP_RECLAIM_COMPLETE
+#define LAST_NFS42_OP  OP_WRITE_SAME
 
 enum nfsstat4 {
        NFS4_OK = 0,