svn commit: r192861 - in head/sys/fs: nfs nfsserver

Rick Macklem rmacklem at FreeBSD.org
Tue May 26 22:21:56 UTC 2009


Author: rmacklem
Date: Tue May 26 22:21:53 2009
New Revision: 192861
URL: http://svn.freebsd.org/changeset/base/192861

Log:
  Fix the experimental nfs subsystem so that it builds with the
  current NFSv4 ACLs, as defined in sys/acl.h. It still needs a
  way to test a mount point for NFSv4 ACL support before it will
  work. Until then, the NFSHASNFS4ACL() macro just always returns 0.
  
  Approved by:	kib (mentor)

Modified:
  head/sys/fs/nfs/nfs_commonacl.c
  head/sys/fs/nfs/nfs_commonsubs.c
  head/sys/fs/nfs/nfsport.h
  head/sys/fs/nfsserver/nfs_nfsdport.c
  head/sys/fs/nfsserver/nfs_nfsdserv.c

Modified: head/sys/fs/nfs/nfs_commonacl.c
==============================================================================
--- head/sys/fs/nfs/nfs_commonacl.c	Tue May 26 21:40:15 2009	(r192860)
+++ head/sys/fs/nfs/nfs_commonacl.c	Tue May 26 22:21:53 2009	(r192861)
@@ -224,7 +224,7 @@ nfsrv_acemasktoperm(u_int32_t acetype, u
 	}
 	if (mask & NFSV4ACE_SEARCH) {
 		mask &= ~NFSV4ACE_SEARCH;
-		perm |= ACL_SEARCH;
+		perm |= ACL_EXECUTE;
 	}
 	if (mask & NFSV4ACE_DELETECHILD) {
 		mask &= ~NFSV4ACE_DELETECHILD;
@@ -505,7 +505,7 @@ nfsrv_buildace(struct nfsrv_descript *nd
 			acemask |= NFSV4ACE_READNAMEDATTR;
 		if (ace->ae_perm & ACL_WRITE_NAMED_ATTRS)
 			acemask |= NFSV4ACE_WRITENAMEDATTR;
-		if (ace->ae_perm & ACL_SEARCH)
+		if (ace->ae_perm & ACL_EXECUTE)
 			acemask |= NFSV4ACE_SEARCH;
 		if (ace->ae_perm & ACL_DELETE_CHILD)
 			acemask |= NFSV4ACE_DELETECHILD;

Modified: head/sys/fs/nfs/nfs_commonsubs.c
==============================================================================
--- head/sys/fs/nfs/nfs_commonsubs.c	Tue May 26 21:40:15 2009	(r192860)
+++ head/sys/fs/nfs/nfs_commonsubs.c	Tue May 26 22:21:53 2009	(r192861)
@@ -1018,7 +1018,7 @@ nfsv4_loadattr(struct nfsrv_descript *nd
 			    if (nfsrv_useacl) {
 				NFSACL_T *naclp;
 
-				naclp = acl_alloc();
+				naclp = acl_alloc(M_WAITOK);
 				error = nfsrv_dissectacl(nd, naclp, &aceerr,
 				    &cnt, p);
 				if (error) {
@@ -1933,7 +1933,7 @@ nfsv4_fillattr(struct nfsrv_descript *nd
 	} else {
 		NFSCLRNOTFILLABLE_ATTRBIT(retbitp);
 #ifdef NFS4_ACL_EXTATTR_NAME
-		naclp = acl_alloc();
+		naclp = acl_alloc(M_WAITOK);
 #endif
 		aclp = naclp;
 	}

Modified: head/sys/fs/nfs/nfsport.h
==============================================================================
--- head/sys/fs/nfs/nfsport.h	Tue May 26 21:40:15 2009	(r192860)
+++ head/sys/fs/nfs/nfsport.h	Tue May 26 22:21:53 2009	(r192861)
@@ -71,8 +71,6 @@
 #include <sys/bio.h>
 #include <sys/buf.h>
 #include <sys/acl.h>
-/* until the nfsv4 acl stuff is all committed, undef NFS4_ACL_EXTATTR_NAME */
-#undef NFS4_ACL_EXTATTR_NAME
 #include <sys/module.h>
 #include <sys/sysent.h>
 #include <sys/syscall.h>
@@ -789,7 +787,7 @@ void newnfs_realign(struct mbuf **);
 #define	NFSSETWRITEVERF(n)	((n)->nm_state |= NFSSTA_HASWRITEVERF)
 #define	NFSSETHASSETFSID(n)	((n)->nm_state |= NFSSTA_HASSETFSID)
 #ifdef NFS4_ACL_EXTATTR_NAME
-#define	NFSHASNFS4ACL(m)	((m)->mnt_flag & MNT_NFS4ACLS)
+#define	NFSHASNFS4ACL(m)	0
 #else
 #define	NFSHASNFS4ACL(m)	0
 #endif

Modified: head/sys/fs/nfsserver/nfs_nfsdport.c
==============================================================================
--- head/sys/fs/nfsserver/nfs_nfsdport.c	Tue May 26 21:40:15 2009	(r192860)
+++ head/sys/fs/nfsserver/nfs_nfsdport.c	Tue May 26 22:21:53 2009	(r192861)
@@ -187,7 +187,11 @@ nfsvno_accchk(struct vnode *vp, u_int32_
 	if (vpislocked == 0)
 		NFSVOPLOCK(vp, LK_EXCLUSIVE | LK_RETRY, p);
 
-#ifdef NFS4_ACL_EXTATTR_NAME
+#if defined(NFS4_ACL_EXTATTR_NAME) && defined(notyet)
+	/*
+	 * This function should be called once FFS has NFSv4 ACL support
+	 * in it.
+	 */
 	/*
 	 * Should the override still be applied when ACLs are enabled?
 	 */

Modified: head/sys/fs/nfsserver/nfs_nfsdserv.c
==============================================================================
--- head/sys/fs/nfsserver/nfs_nfsdserv.c	Tue May 26 21:40:15 2009	(r192860)
+++ head/sys/fs/nfsserver/nfs_nfsdserv.c	Tue May 26 22:21:53 2009	(r192861)
@@ -237,7 +237,7 @@ nfsrvd_setattr(struct nfsrv_descript *nd
 		return (0);
 	}
 #ifdef NFS4_ACL_EXTATTR_NAME
-	aclp = acl_alloc();
+	aclp = acl_alloc(M_WAITOK);
 	aclp->acl_cnt = 0;
 #endif
 	NFSVNO_ATTRINIT(&nva);
@@ -1041,7 +1041,7 @@ nfsrvd_mknod(struct nfsrv_descript *nd, 
 		return (0);
 	}
 #ifdef NFS4_ACL_EXTATTR_NAME
-	aclp = acl_alloc();
+	aclp = acl_alloc(M_WAITOK);
 	aclp->acl_cnt = 0;
 #endif
 
@@ -2418,7 +2418,7 @@ nfsrvd_open(struct nfsrv_descript *nd, _
 	NFSACL_T *aclp = NULL;
 
 #ifdef NFS4_ACL_EXTATTR_NAME
-	aclp = acl_alloc();
+	aclp = acl_alloc(M_WAITOK);
 	aclp->acl_cnt = 0;
 #endif
 	NFSZERO_ATTRBIT(&attrbits);


More information about the svn-src-all mailing list