diff options
author | Andrew Bartlett <abartlet@samba.org> | 2008-06-28 22:04:19 +1000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2008-06-28 22:04:19 +1000 |
commit | 43bf8f4546c94d19c4bb203835e91c640b553116 (patch) | |
tree | a6707ff36ed0a8f6ab0e7d9d663d9f1d785c6666 | |
parent | b5808e5d65ef100a4a54e720ab4f4e1ffd80a057 (diff) | |
parent | 98014c5668e3269a059658e433d636213e2b06e6 (diff) | |
download | samba-43bf8f4546c94d19c4bb203835e91c640b553116.tar.gz samba-43bf8f4546c94d19c4bb203835e91c640b553116.tar.bz2 samba-43bf8f4546c94d19c4bb203835e91c640b553116.zip |
Merge branch 'v4-0-test' of ssh://git.samba.org/data/git/samba into 4-0-local
(This used to be commit 6479f481dbf2f5c83edec0702ece73e83b6c810e)
-rw-r--r-- | source4/ntvfs/ntvfs_base.c | 2 | ||||
-rw-r--r-- | source4/ntvfs/posix/config.mk | 23 | ||||
-rw-r--r-- | source4/ntvfs/posix/pvfs_acl.c | 22 | ||||
-rw-r--r-- | source4/ntvfs/posix/vfs_posix.c | 7 | ||||
-rw-r--r-- | source4/ntvfs/posix/vfs_posix.h | 1 |
5 files changed, 44 insertions, 11 deletions
diff --git a/source4/ntvfs/ntvfs_base.c b/source4/ntvfs/ntvfs_base.c index 6de13e4a0a..1385481bbc 100644 --- a/source4/ntvfs/ntvfs_base.c +++ b/source4/ntvfs/ntvfs_base.c @@ -209,8 +209,6 @@ NTSTATUS ntvfs_init(struct loadparm_context *lp_ctx) extern NTSTATUS ntvfs_nbench_init(void); extern NTSTATUS ntvfs_unixuid_init(void); extern NTSTATUS ntvfs_ipc_init(void); - extern NTSTATUS pvfs_acl_nfs4_init(void); - extern NTSTATUS pvfs_acl_xattr_init(void); extern NTSTATUS ntvfs_print_init(void); extern NTSTATUS ntvfs_simple_init(void); extern NTSTATUS ntvfs_cifs_posix_init(void); diff --git a/source4/ntvfs/posix/config.mk b/source4/ntvfs/posix/config.mk index 0ee3e3be16..1ea4e8f97d 100644 --- a/source4/ntvfs/posix/config.mk +++ b/source4/ntvfs/posix/config.mk @@ -1,9 +1,16 @@ + +[SUBSYSTEM::pvfs_acl] + +pvfs_acl_OBJ_FILES = $(ntvfssrcdir)/posix/pvfs_acl.o + +$(eval $(call proto_header_template,$(ntvfssrcdir)/posix/vfs_acl_proto.h,$(pvfs_acl_OBJ_FILES:.o=.c))) + ################################################ # Start MODULE pvfs_acl_xattr [MODULE::pvfs_acl_xattr] INIT_FUNCTION = pvfs_acl_xattr_init -SUBSYSTEM = ntvfs -PRIVATE_DEPENDENCIES = NDR_XATTR ntvfs_posix +SUBSYSTEM = pvfs_acl +PRIVATE_DEPENDENCIES = NDR_XATTR # End MODULE pvfs_acl_xattr ################################################ @@ -13,16 +20,15 @@ pvfs_acl_xattr_OBJ_FILES = $(ntvfssrcdir)/posix/pvfs_acl_xattr.o # Start MODULE pvfs_acl_nfs4 [MODULE::pvfs_acl_nfs4] INIT_FUNCTION = pvfs_acl_nfs4_init -SUBSYSTEM = ntvfs -PRIVATE_DEPENDENCIES = NDR_NFS4ACL SAMDB ntvfs_posix +SUBSYSTEM = pvfs_acl +PRIVATE_DEPENDENCIES = NDR_NFS4ACL SAMDB # End MODULE pvfs_acl_nfs4 ################################################ pvfs_acl_nfs4_OBJ_FILES = $(ntvfssrcdir)/posix/pvfs_acl_nfs4.o ################################################ -[MODULE::pvfs_aio] -SUBSYSTEM = ntvfs +[SUBSYSTEM::pvfs_aio] PRIVATE_DEPENDENCIES = LIBAIO_LINUX ################################################ @@ -35,8 +41,8 @@ SUBSYSTEM = ntvfs OUTPUT_TYPE = MERGED_OBJ INIT_FUNCTION = ntvfs_posix_init #PRIVATE_DEPENDENCIES = pvfs_acl_xattr pvfs_acl_nfs4 -PRIVATE_DEPENDENCIES = NDR_XATTR WRAP_XATTR BLKID ntvfs_common MESSAGING pvfs_aio \ - LIBWBCLIENT +PRIVATE_DEPENDENCIES = NDR_XATTR WRAP_XATTR BLKID ntvfs_common MESSAGING \ + LIBWBCLIENT pvfs_acl pvfs_aio # End MODULE ntvfs_posix ################################################ @@ -65,7 +71,6 @@ ntvfs_posix_OBJ_FILES = $(addprefix $(ntvfssrcdir)/posix/, \ pvfs_ioctl.o \ pvfs_xattr.o \ pvfs_streams.o \ - pvfs_acl.o \ pvfs_notify.o \ xattr_system.o \ xattr_tdb.o) diff --git a/source4/ntvfs/posix/pvfs_acl.c b/source4/ntvfs/posix/pvfs_acl.c index 9a9200e4f0..57a463aba6 100644 --- a/source4/ntvfs/posix/pvfs_acl.c +++ b/source4/ntvfs/posix/pvfs_acl.c @@ -24,6 +24,7 @@ #include "vfs_posix.h" #include "librpc/gen_ndr/xattr.h" #include "libcli/security/security.h" +#include "param/param.h" /* the list of currently registered ACL backends */ @@ -79,6 +80,27 @@ const struct pvfs_acl_ops *pvfs_acl_backend_byname(const char *name) return NULL; } +NTSTATUS pvfs_acl_init(struct loadparm_context *lp_ctx) +{ + static bool initialized = false; + extern NTSTATUS pvfs_acl_nfs4_init(void); + extern NTSTATUS pvfs_acl_xattr_init(void); + init_module_fn static_init[] = { STATIC_pvfs_acl_MODULES }; + init_module_fn *shared_init; + + if (initialized) return NT_STATUS_OK; + initialized = true; + + shared_init = load_samba_modules(NULL, lp_ctx, "pvfs_acl"); + + run_init_functions(static_init); + run_init_functions(shared_init); + + talloc_free(shared_init); + + return NT_STATUS_OK; +} + /* map a single access_mask from generic to specific bits for files/dirs diff --git a/source4/ntvfs/posix/vfs_posix.c b/source4/ntvfs/posix/vfs_posix.c index b5dd270346..ce0da7033d 100644 --- a/source4/ntvfs/posix/vfs_posix.c +++ b/source4/ntvfs/posix/vfs_posix.c @@ -176,6 +176,13 @@ static NTSTATUS pvfs_connect(struct ntvfs_module_context *ntvfs, char *base_directory; NTSTATUS status; + /* + * TODO: call this from ntvfs_posix_init() + * but currently we don't have a lp_ctx there + */ + status = pvfs_acl_init(ntvfs->ctx->lp_ctx); + NT_STATUS_NOT_OK_RETURN(status); + pvfs = talloc_zero(ntvfs, struct pvfs_state); NT_STATUS_HAVE_NO_MEMORY(pvfs); diff --git a/source4/ntvfs/posix/vfs_posix.h b/source4/ntvfs/posix/vfs_posix.h index cf39bcf0ac..1a54b57d63 100644 --- a/source4/ntvfs/posix/vfs_posix.h +++ b/source4/ntvfs/posix/vfs_posix.h @@ -283,6 +283,7 @@ struct pvfs_acl_ops { }; #include "ntvfs/posix/vfs_posix_proto.h" +#include "ntvfs/posix/vfs_acl_proto.h" NTSTATUS pvfs_aio_pread(struct ntvfs_request *req, union smb_read *rd, struct pvfs_file *f, uint32_t maxcnt); |