Skip to content

Commit

Permalink
pvfs: create a pvfs_acl subsystem
Browse files Browse the repository at this point in the history
That means that the pvfs_acl implementations no longer register
as ntvfs modules (which was wrong)

metze
(This used to be commit 89e9055)
  • Loading branch information
metze-samba committed Jun 28, 2008
1 parent c9d2570 commit 98014c5
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 9 deletions.
2 changes: 0 additions & 2 deletions source4/ntvfs/ntvfs_base.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
20 changes: 13 additions & 7 deletions source4/ntvfs/posix/config.mk
Original file line number Diff line number Diff line change
@@ -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
################################################

Expand All @@ -13,8 +20,8 @@ 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
################################################

Expand All @@ -34,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
################################################

Expand Down Expand Up @@ -64,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)
Expand Down
22 changes: 22 additions & 0 deletions source4/ntvfs/posix/pvfs_acl.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down Expand Up @@ -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
Expand Down
7 changes: 7 additions & 0 deletions source4/ntvfs/posix/vfs_posix.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
1 change: 1 addition & 0 deletions source4/ntvfs/posix/vfs_posix.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 98014c5

Please sign in to comment.