aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Staubach <staubach@redhat.com>2009-11-02 16:59:07 -0500
committerJ. Bruce Fields <bfields@citi.umich.edu>2009-11-04 13:46:37 -0500
commit1b7e0403c6a72d18bebd4f2a6858b6c69c4bd428 (patch)
tree94ef83aeae87abc76464b58e439642c5bcd79050
parentaba24d71580180dfdf6a1a83a5858a1c048fd785 (diff)
nfsd: register NFS_ACL with rpcbind
Modify the NFS server to register the NFS_ACL services with the rpcbind daemon. This allows the client to ping for the existence of the NFS_ACL support via commands such as "rpcinfo -t <server> nfs_acl". This patch also modifies the NFS_ACL support so that responses to version 2 NULLPROC requests can be made. The changelog for the patch which turned off this functionality mentioned something about not registering the NFS_ACL as being part of some tradition. I can't find this tradition and the only other implementation which supports NFS_ACL does register them with the rpcbind daemon. Signed-off-by: Peter Staubach <staubach@redhat.com> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
-rw-r--r--fs/nfsd/nfs2acl.c13
-rw-r--r--fs/nfsd/nfs3acl.c2
2 files changed, 12 insertions, 3 deletions
diff --git a/fs/nfsd/nfs2acl.c b/fs/nfsd/nfs2acl.c
index 4e3219e84116..e2a17f0a96a7 100644
--- a/fs/nfsd/nfs2acl.c
+++ b/fs/nfsd/nfs2acl.c
@@ -217,6 +217,16 @@ static int nfsaclsvc_decode_accessargs(struct svc_rqst *rqstp, __be32 *p,
217 * XDR encode functions 217 * XDR encode functions
218 */ 218 */
219 219
220/*
221 * There must be an encoding function for void results so svc_process
222 * will work properly.
223 */
224int
225nfsaclsvc_encode_voidres(struct svc_rqst *rqstp, __be32 *p, void *dummy)
226{
227 return xdr_ressize_check(rqstp, p);
228}
229
220/* GETACL */ 230/* GETACL */
221static int nfsaclsvc_encode_getaclres(struct svc_rqst *rqstp, __be32 *p, 231static int nfsaclsvc_encode_getaclres(struct svc_rqst *rqstp, __be32 *p,
222 struct nfsd3_getaclres *resp) 232 struct nfsd3_getaclres *resp)
@@ -308,7 +318,6 @@ static int nfsaclsvc_release_access(struct svc_rqst *rqstp, __be32 *p,
308} 318}
309 319
310#define nfsaclsvc_decode_voidargs NULL 320#define nfsaclsvc_decode_voidargs NULL
311#define nfsaclsvc_encode_voidres NULL
312#define nfsaclsvc_release_void NULL 321#define nfsaclsvc_release_void NULL
313#define nfsd3_fhandleargs nfsd_fhandle 322#define nfsd3_fhandleargs nfsd_fhandle
314#define nfsd3_attrstatres nfsd_attrstat 323#define nfsd3_attrstatres nfsd_attrstat
@@ -346,5 +355,5 @@ struct svc_version nfsd_acl_version2 = {
346 .vs_proc = nfsd_acl_procedures2, 355 .vs_proc = nfsd_acl_procedures2,
347 .vs_dispatch = nfsd_dispatch, 356 .vs_dispatch = nfsd_dispatch,
348 .vs_xdrsize = NFS3_SVC_XDRSIZE, 357 .vs_xdrsize = NFS3_SVC_XDRSIZE,
349 .vs_hidden = 1, 358 .vs_hidden = 0,
350}; 359};
diff --git a/fs/nfsd/nfs3acl.c b/fs/nfsd/nfs3acl.c
index 9981dbb377a3..ff73596eb550 100644
--- a/fs/nfsd/nfs3acl.c
+++ b/fs/nfsd/nfs3acl.c
@@ -264,6 +264,6 @@ struct svc_version nfsd_acl_version3 = {
264 .vs_proc = nfsd_acl_procedures3, 264 .vs_proc = nfsd_acl_procedures3,
265 .vs_dispatch = nfsd_dispatch, 265 .vs_dispatch = nfsd_dispatch,
266 .vs_xdrsize = NFS3_SVC_XDRSIZE, 266 .vs_xdrsize = NFS3_SVC_XDRSIZE,
267 .vs_hidden = 1, 267 .vs_hidden = 0,
268}; 268};
269 269