summaryrefslogtreecommitdiffstats
path: root/sys/fs/nfs
diff options
context:
space:
mode:
authorrmacklem <rmacklem@FreeBSD.org>2009-05-26 22:21:53 +0000
committerrmacklem <rmacklem@FreeBSD.org>2009-05-26 22:21:53 +0000
commitc1143c05d4831dacf62ba759cf7b9fa4fbdca19d (patch)
tree7e7b81794b65ee6fd6f5bb6519bac76cf80722d6 /sys/fs/nfs
parent527dd575556c8d79007e7a35cd752f1b46343fd2 (diff)
downloadFreeBSD-src-c1143c05d4831dacf62ba759cf7b9fa4fbdca19d.zip
FreeBSD-src-c1143c05d4831dacf62ba759cf7b9fa4fbdca19d.tar.gz
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)
Diffstat (limited to 'sys/fs/nfs')
-rw-r--r--sys/fs/nfs/nfs_commonacl.c4
-rw-r--r--sys/fs/nfs/nfs_commonsubs.c4
-rw-r--r--sys/fs/nfs/nfsport.h4
3 files changed, 5 insertions, 7 deletions
diff --git a/sys/fs/nfs/nfs_commonacl.c b/sys/fs/nfs/nfs_commonacl.c
index 4ecac8b..13d9043 100644
--- a/sys/fs/nfs/nfs_commonacl.c
+++ b/sys/fs/nfs/nfs_commonacl.c
@@ -224,7 +224,7 @@ nfsrv_acemasktoperm(u_int32_t acetype, u_int32_t mask, int owner,
}
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, u_char *name, int namelen,
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;
diff --git a/sys/fs/nfs/nfs_commonsubs.c b/sys/fs/nfs/nfs_commonsubs.c
index a398a72..b1a7051 100644
--- a/sys/fs/nfs/nfs_commonsubs.c
+++ b/sys/fs/nfs/nfs_commonsubs.c
@@ -1018,7 +1018,7 @@ nfsv4_loadattr(struct nfsrv_descript *nd, vnode_t vp,
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, vnode_t vp, NFSACL_T *saclp,
} else {
NFSCLRNOTFILLABLE_ATTRBIT(retbitp);
#ifdef NFS4_ACL_EXTATTR_NAME
- naclp = acl_alloc();
+ naclp = acl_alloc(M_WAITOK);
#endif
aclp = naclp;
}
diff --git a/sys/fs/nfs/nfsport.h b/sys/fs/nfs/nfsport.h
index 71b6cb4..6729bd6 100644
--- a/sys/fs/nfs/nfsport.h
+++ b/sys/fs/nfs/nfsport.h
@@ -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
OpenPOWER on IntegriCloud