aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs
diff options
context:
space:
mode:
authorAlexandros Batsakis <batsakis@netapp.com>2009-12-05 13:19:01 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2009-12-05 13:19:01 -0500
commit07bccc2dd4e8745859f0fa7d120ea39320fbcdbf (patch)
tree0a06d0689b300842a85c7c8f8605ea86dcb7cf81 /fs/nfs
parent0b9e2d41f1f0360be08809d4e3bb56b67be6241a (diff)
nfs41: add support for callback with RPC version number 4
The NFSv4.1 spec-29 (18.36.3) says that the server MUST use an ONC RPC (program) version number equal to 4 in callbacks sent to the client. For now we allow both versions 1 and 4. Signed-off-by: Alexandros Batsakis <batsakis@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs')
-rw-r--r--fs/nfs/callback.c1
-rw-r--r--fs/nfs/callback_xdr.c7
-rw-r--r--fs/nfs/internal.h1
-rw-r--r--fs/nfs/nfs4_fs.h1
4 files changed, 10 insertions, 0 deletions
diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c
index e66ec5d169f7..73ab220354df 100644
--- a/fs/nfs/callback.c
+++ b/fs/nfs/callback.c
@@ -385,6 +385,7 @@ static int nfs_callback_authenticate(struct svc_rqst *rqstp)
385 */ 385 */
386static struct svc_version *nfs4_callback_version[] = { 386static struct svc_version *nfs4_callback_version[] = {
387 [1] = &nfs4_callback_version1, 387 [1] = &nfs4_callback_version1,
388 [4] = &nfs4_callback_version4,
388}; 389};
389 390
390static struct svc_stat nfs4_callback_stats; 391static struct svc_stat nfs4_callback_stats;
diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c
index 76b0aa0f73bf..0fda5e66241d 100644
--- a/fs/nfs/callback_xdr.c
+++ b/fs/nfs/callback_xdr.c
@@ -718,3 +718,10 @@ struct svc_version nfs4_callback_version1 = {
718 .vs_dispatch = NULL, 718 .vs_dispatch = NULL,
719}; 719};
720 720
721struct svc_version nfs4_callback_version4 = {
722 .vs_vers = 4,
723 .vs_nproc = ARRAY_SIZE(nfs4_callback_procedures1),
724 .vs_proc = nfs4_callback_procedures1,
725 .vs_xdrsize = NFS4_CALLBACK_XDRSIZE,
726 .vs_dispatch = NULL,
727};
diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h
index a6f7b6cbfd09..7b890ba37fa2 100644
--- a/fs/nfs/internal.h
+++ b/fs/nfs/internal.h
@@ -156,6 +156,7 @@ struct vfsmount *nfs_do_refmount(const struct vfsmount *mnt_parent, struct dentr
156 156
157/* callback_xdr.c */ 157/* callback_xdr.c */
158extern struct svc_version nfs4_callback_version1; 158extern struct svc_version nfs4_callback_version1;
159extern struct svc_version nfs4_callback_version4;
159 160
160/* pagelist.c */ 161/* pagelist.c */
161extern int __init nfs_init_nfspagecache(void); 162extern int __init nfs_init_nfspagecache(void);
diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
index 5c7740178a08..0d25a82451d9 100644
--- a/fs/nfs/nfs4_fs.h
+++ b/fs/nfs/nfs4_fs.h
@@ -290,6 +290,7 @@ struct nfs4_mount_data;
290 290
291/* callback_xdr.c */ 291/* callback_xdr.c */
292extern struct svc_version nfs4_callback_version1; 292extern struct svc_version nfs4_callback_version1;
293extern struct svc_version nfs4_callback_version4;
293 294
294#else 295#else
295 296